如何强制 App 在 iOS 后台不断开与融云的长连接?

本文描述了 App 在 iOS 后台强制保持与融云的长连接的一种方案。

前提条件

一个非常重要的前提,是您的 App 自身拥有在 iOS 系统后台长期存活的权限,否则您可以忽略下面的所有内容,使用 SDK 默认设置即可。

请首先确认 App 拥有在 iOS 系统后台长期存活的权限。

在 iOS 系统中,一般的 App 进入后台一段时间之后就会被冻结,SDK 针对这种情况已经做了良好的设计和默认的处理。
App 进入后台两分钟之后,默认对断开和融云服务器的长连接,通过 APNS 进行消息的推送,以保证用户体验。

有些 App 自身能获取到在系统后台长期存活的权限,如:外设、物联网、越狱等特殊的应用,可以通过设置使 SDK 在后台强制保持永久的长连接。

实现步骤

以下分别描述了 融云 IM SDK 4.X 版本和 5.X 版本在 iOS 后台强制保持永久的长连接的方法。

4.X 版本

4.x 版本位置在 RongIMLib.framework 中有一个 RCConfig.plist 文件,您需要将这个文件单独导入工程中。增加一个 Key 为 Connection 的 Dictionary,在其中增加一个 Key 为 ForceKeepAlive 的 Boolean 属性,将 Value 设置为 YES。SDK 就会在后台强制保持永久的长连接。

5.X 版本

5.x 版本位置在 RongIMLibCore.xcframework 中有一个 RCConfig.plist 文件,您需要将这个文件单独导入工程中。增加一个 Key 为 Connection 的 Dictionary,在其中增加一个 Key 为 ForceKeepAlive 的 Boolean 属性,将 Value 设置为 YES。SDK 就会在后台强制保持永久的长连接。

注意:设置了强制保持永久长连接后,您需要根据项目业务和 App 情况,自己执行断开连接的操作,比如根据用户长时间没有操作应该手动断开长连接节省耗电量提升用户体验。

最后,重要的事情再说一遍,如果 App 不具备长时间在后台存活的权限,请使用 SDK 默认设计,不需要进行任何配置。