文档中心
IM 即时通讯
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 即时通讯
  • 离线推送
  • 实现 VoIP 通知

实现 VoIP 通知

更新时间:2024-04-23 11:46

功能简介

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

  • 受中国大陆政策限制,此功能仅限于中国大陆以外地区使用。
  • 此功能仅限于 iOS 设备上实现。

前提条件

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

  • 已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID、AppSign。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台 自助开通 ZIM 服务(详情请参考控制台的 服务配置 - 即时通讯 - 开通服务),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。

  • 已集成 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “2 集成 SDK”。

  • 已集成 ZPNs SDK 2.3.3 或以上版本 并实现离线推送,详情请参考 实现离线推送。

  • 已向用户申请通知权限,并且用户同意 App 发送推送通知。

  • Xcode 工程已在 +Capability 中添加 Push Notifications。

实现流程

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

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

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

  4. 使用 Xcode 打开工程,在 “Signing & capabilities” 页面单击 “+Capability”,并在弹窗中双击 “Background Modes”,您即可在 “Signing & capabilities” 看到 “Background Modes” 配置区域。

    在 “Background Modes” 配置区域勾选 “Voice over IP”、“Background fetch” 以及 “Remote notifications”。

  5. 导入 PushKit 与 CallKit 库。

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

    import ZPNs, { CallKit } from 'zego-zpns-react-native';
    
    ZPNs.getInstance().applyNotificationPermission();
  2. 设置 iOS 当前所处环境,调用 registerPush,并设置 enableIOSVoIP 为 true。

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

    // 开发环境: true;  生产环境: false (默认值)
    ZPNs.enableDebug(true);
    
    ZPNs.getInstance().registerPush({ enableIOSVoIP: true });
  3. 注册 registered 回调,获取 携带 VoIP token 的 pushID。

     ZPNs.getInstance().on("registered", function (message) {
         console.log("[ZPNs] registered. pushID: " + message.pushID + ", error: " + message.errorCode);
     });
  4. 发送及接收 VoIP 通知。

    • 发送 VoIP 通知

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

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

      var pushConfig = {
          resourcesID: "your resourcesID", // 联系 ZEGO 技术支持配置的 resourcesID
          title: "系统通话标题",
          payload: "业务需要的透传字段",
          content: "your content",
          voIPConfig:{
              'iOSVoIPHandleType': ZIMCXHandleType.Generic,
              'iOSVoIPHandleValue': '发送方联系人信息',
              'iOSVoIPHasVideo': true
          }
      };
    • 接收到 VoIP 通知 为了方便 RN 开发者使用 iOS 原生的 Callkit 库接口, ZEGO 封装了相关接口到 zego-callkit-react-native 插件中。请参考 CallKit 使用指南。

本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈