本地通知
Global IM UIKit 已实现本地通知的创建、弹出行为,方便开发者快速构建应用。
什么是本地通知
本地通知指应用在前台或后台运行时,由 Global IM UIKit 或应用客户端直接调用系统接口创建并发送的通知。
iOS 通知栏显示的内容分为“本地通知”和“远程推送”,本文仅描述本地通知的处理方案。如果您不清楚如何区分本地通知与远程推送,可阅读知识库文档 如何理解即时通讯业务中的实时消息、本地通知和 APNs 远程推送。
用法
Global IM UIKit 的本地通知已支持以下场景:
-
当 App 处于前台,且未打开任何会话页面时(未与任何人聊天),接收新消息后默认会响铃,但不弹通知。
-
当 App 刚进入后台时(仍处于后台活跃状态):App 进入后台,SDK 的长连接最多存活 2 分钟,超时会主动断开。在进入后台 2 分钟内,Global IM UIKit 仍可通过长连接通道接收到新消息(撤回消息也会产生撤回信令消息)。接到新消息后,Global IM UIKit 默认会创建并弹出通知,即本地通知。
App 在后台进入非活跃状态后(例如,被系统杀死),Global IM UIKit 与服务端断开连接。如果应用已集成 APNs 推送服务,此时可通过接收推送通知。推送通知由系统直接创建并弹出,不属于本文所述的本地通知。
在通知栏弹出本地通知时,Global IM UIKit 需要在通知标题中展示用户或群组信息,该信息必须由应用程序通过实现用户信息代理的方式提供给 Global IM UIKit。
关于 如何实现用户信息代理,详见用户信息。
重要
如果 Global IM UIKit 在需要弹出本地通知时获取的用户或群组信息为空,则该消息不会发起本地通知。
定制化
关闭前台通知提示音
当 App 处于前台时,默认会播放消息提示音。您可以通过将全局配置中的属性 enableMessageAlertSound
设置为 NO
,关闭所有的前台消息提示音。
RCIMKitConfig.shared.enableMessageAlertSound = NO;
关闭后台本地通知
当 App 处于后台且保持连接时,默认会发本地通知。您可以通过将全局配置中的属性 enableMessageLocalNotification
设置为 NO
,关闭所有的后台消息本地通知。
RCIMKitConfig.shared.enableMessageLocalNotification = NO;
处理本地通知事件
Global IM UIKit 在触发消息铃声或本地通知前,会通过回调方法获取是否需要执行。开发者可以实现消息本地通知代理方法,方法中会携带接收到的新消息,如需自行处理该消息返回 NO
即可,SDK 针对此消息就不再播放铃声或弹默认的本地通知提示。
@protocol RCLocalNotificationDelegate <NSObject>
/// 是否为新消息发送本地通知
/// 当有新消息时,如果新消息触发本地通知,会先回调该方法
/// - Parameter message: 接收到的新消息
- (BOOL)shouldPostLocalNotificationForMessage:(RCMessage *)message;
/// 是否为新消息播放声音
/// 当有新消息时,如果新消息触发铃声,会先回调该方法
/// - Parameter message: 接收到的新消息
- (BOOL)shouldPlaySoundForMessage:(RCMessage *)message;
@end