logo
即时通讯
当前页

实现 VoIP 通知

功能简介

通过 VoIP 通知,您可以在 App 上实现与运营商提供的电话功能一致的语音呼叫体验。

注意

受中国大陆政策限制,此功能仅限于中国大陆以外地区使用。

前提条件

在实现 VoIP 通知之前,请确保:

  • 已集成 ZPNs SDK 2.1.0 或以上版本 并实现离线推送,详情请参考 实现离线推送
  • 已向用户申请通知权限,并且用户同意 App 发送推送通知。

实现流程

1

申请用于 VoIP 推送的证书

Apple developer 官网 申请用于 VoIP 推送的证书(后缀名为 .cer 证书文件),详情请参考 Apple 官方文档

2

导出 “.p12”文件

双击该证书文件,系统会把文件安装到钥匙串访问中,在如图所示位置(左侧边栏选择登录,顶部边栏选中证书),找到该证书,并导出 “.p12” 后缀的文件。

3

获取 resourceID

联系 ZEGO 技术支持配置携带 iOS VoIP 策略的 resourceID

4

申请通知权限

调用 applyNotificationPermission 接口向用户申请同意 App 的通知权限。

import { ZPNs } from '@/uni_modules/zego-zpns-uts';

ZPNs.getInstance().applyNotificationPermission();
5

启用 VoIP

设置 iOS 当前所处环境,调用 registerPush,并设置 enableIOSVoIP 为 true。

注意

请根据开发环境或生产环境准确填入 iOSEnvironment 的参数(打包时用 development 证书签名为开发环境,用 distribution 证书签名为生产环境),否则 ZPNs 服务器无法选择合适的推送证书向 APNs 正确发送离线推送请求。APNs 在生产环境下的到达率与延迟均好于开发环境。

// iOSEnvironment 开发环境: 1;  生产环境: 0 (默认值)
ZPNs.getInstance().registerPush({ iOSEnvironment: 1, enableIOSVoIP: true });
6

获取携带 VoIP token 的 pushID

注册 registered 回调,获取 携带 VoIP token 的 pushID。

 ZPNs.getInstance().onRegistered((message: ZPNsRegisterMessage) => {
     console.log("[ZPNs] registered. pushID: " + message.pushID, "error: " + message.errorCode);
 });
7

发送及接收 VoIP 通知

  • 发送 VoIP 通知

    说明

    请联系 ZEGO 技术支持,配置带 VoIP 策略 的 resourceID。

    发起呼叫邀请 或其他需要 VoIP 通知场景中,向 ZIMPushConfig 中传入该 resourceID,即可配置本次推送为 VoIP 类型。

    const pushConfig: ZIMPushConfig = {
        resourcesID: "your resourcesID", // 联系 ZEGO 技术支持配置的 resourcesID
        title: "系统通话标题",
        payload: "业务需要的透传字段",
        content: "your content",
        voIPConfig:{
            iOSVoIPHandleType: 1,
            iOSVoIPHandleValue: '发送方联系人信息',
            iOSVoIPHasVideo: true
        }
    };
  • 接收到 VoIP 通知

    为了方便开发者使用 iOS 原生的 Callkit 库接口, ZEGO 封装了相关接口到 zego-callkit-uts 插件中。请参考 CallKit 使用指南

Previous

跨应用离线推送

Next

自定义通知图标

当前页

返回到顶部