本文描述了 App 在 iOS 后台强制保持与融云的长连接的一种方案。
前提条件
一个非常重要的前提,是您的 App 自身拥有在 iOS 系统后台长期存活的权限,否则您可以忽略下面的所有内容,使用 SDK 默认设置即可。
请首先确认 App 拥有在 iOS 系统后台长期存活的权限。
在 iOS 系统中,一般的 App 进入后台一段时间之后就会被冻结挂起,SDK 针对这种情况已经做了良好的设计和默认的处理。
App 进入后台最长两分钟之后,默认对断开和融云服务器的长连接,通过 APNS 进行消息的推送,以保证用户体验。
有些 App 自身能获取到在系统后台长期存活的权限,如:音视频播放、外设、物联网、越狱等特殊的应用,可以通过设置使 SDK 在后台强制保持永久的长连接。
实现步骤
以下分别描述了 融云 IM SDK 5.16.1 版本前后 iOS 后台强制保持永久的长连接的方法。
5.16.1 版本后
您可以通过设置 RCLocalConfiguration 的 ForceKeepAlive 属性来实现设置保活状态。
比如当您使用音视频功能时,设置此属性为 Yes;当音视频功能结束的时候,设置此属性为 No。
[RCLocalConfiguration sharedInstance].forceKeepAlive = YES;
5.16.1 版本之前
您可以导入下面的分类,通过分类方法设置是否 IM 保活,YES 表示保活:
longlive.zip (1.7 KB)
注意:设置了强制保持永久长连接后,您需要根据项目业务和 App 情况,自己执行断开连接的操作,将 IMSDK 保活的设置跟取消应该与业务层的保活项目的生命周期对齐。
最后,重要的事情再说一遍,如果 App 不具备长时间在后台存活的权限,请使用 SDK 默认设计,不需要进行任何配置,避免融云服务器无法及时感知客户端离线造成无法推送远程通知的情况。