全部文档

推送管理

# iOS CallKit 框架现状

从 iOS10.0 版本开始苹果公司推出 CallKit 框架来支持 VoIP 音频呼叫的来电提示功能。如果工程中使用了该框架在提交国内苹果审核时会被拒绝, 拒绝的内容如下:

说明

Apple Dear Developer,

The Chinese Ministry of Industry and Information Technology (MIIT) http://www.miit.gov.cn/n1146285/ ... n3057713/index.html requested that CallKit functionality be deactivated in all apps available on the China App Store.

Since your app currently includes CallKit and is available for sale on the China App Store, you will need to submit an update that removes CallKit functionality in China.

VOIP call functionality continues to be allowed but can no longer take advantage of CallKit ’ s intuitive look and feel. CallKit can continue to be used in apps outside of China.

If you have questions or do not believe your app is subject to this update, please contact MIIT.

Best regards,

App Store Review

如果您的 APP 不需要提交国内苹果商店审核就可以使用该框架。您可以通过工单向融云索取包含 CallKit 框架实现的 RongCallKit 库的开源源码。融云在 Github 开源的 RongCallKit 源码和发布的 RongCallKit 库文件中默认不包含 CallKit 框架,以免造成在国内提交苹果商店审核时被拒绝的情况。

# VoIP 推送

VoIP 推送需要使用到 PushKit 框架从苹果获取 VoIP Token,该框架在 RongCallLib 中有实现,但默认未开启。

从 iOS13 开始,苹果基于安全角度考虑在使用 VoIP 推送时必须配合 CallKit 框架使用,否则 iOS 系统将在收到 VoIP 推送后杀掉 APP 进程,就像没有收到 VoIP 推送一样(苹果官方文档)。而 CallKit 框架如上所述无法在国内使用,因此也就造成无法使用 VoIP 推送功能,同时也没有必要在 RongCallLib 中开启去注册 VoIP 推送所需的 Token

如果您的 APP 不用提交国内苹果商店审核, 需要使用 VoIP 推送:

  • 当您基于 RongCallLib 库进行的开发时,请在该库的 RCCallClient 类中使用单例打开 - (void)setApplePushKitEnable:(BOOL)enable 设置,用来从苹果获取 VoIP Token。设置的位置最好是在 AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中,因为 RongIMLib 在初始化时就会上传 VoIP TokenServer

  • 当您基于 RongCallKit 库进行的开发时,则必须使用从融云索取的 RongCallKit 开源源码替换掉工程中的 RongCallKit.framework 库文件替换方法

# 融云解决办法

对于国内需要提交苹果商店审核的 APP,融云使用 APNs 普通推送替代 VoIP 推送的方式接收音视频呼叫。请在融云开发者后台的 VoIP 设置 中开启 VoIP 推送转 APNs 推送,该选项默认为开启,即:使用 APNs 普通推送。

使用 APNs 普通推送后的影响:

  • APNs 普通推送限制铃声最长为30秒(苹果官方文档),融云默认的来电铃声为 17 秒。
  • 震动效果只震动一下,与收到普通消息的震动效果相同。经过验证后发现,持续震动效果无法通过 NotificationExtension 相关逻辑来实现,因为在 NotificationExtension 中无权限调用 iOS 系统的振动。
  • 收到 APNs 普通推送时无法激活 APP,点击通知条后 App 才能启动,在启动完成 IM 建立连接成功后 RongCallKit 自动弹出音视频来电接听界面。
  • 在手机设置的通知中,需要开启 APP 的通知,手机屏幕解锁时提醒的横幅选项需要勾选,并且横幅的风格修改为持续,否则通知条会在弹出几秒后自动缩回,来电铃声会被终止,此为 iOS 系统行为,融云 SDK 无法控制。

# 总结

需要提交国内苹果商店审核

请直接使用融云官网或 cocoaPod 上提供的融云 SDK,并保证融云开发者后台的 VoIP 设置VoIP 推送转 APNs 推送 为开启状态。

不需要提交国内苹果商店审核

可以通过工单向融云索取实现了苹果 CallKit 框架的 RongCallKit 源码,替换工程中使用的 RongCallKit.framework 库文件,并将融云开发者后台的 VoIP 设置VoIP 推送转 APNs 推送 设置为关闭状态。

# 备注

VoIP 推送必须使用 iOS CallKit 框架的限制是从 iOS13 开始的,如果使用 Xcode10 也就是 iOS12 编译 APP 还可以在不使用 iOS CallKit 框架下使用 VoIP 推送并通过苹果商店审核,但 苹果官网在2020年3月26日的新闻 中公布,使用 Xcode10 编译 APP 提交苹果商店的截止日期为2020年6月30日,也就是从2020年7月起必须使用 Xcode11 编译 APP,否则无法通过苹果商店审核,这样就阻断了 Xcode10 编译 APP 使用 VoIP 推送的办法。

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助