本地通知
IMKit 已实现本地通知的创建、弹出行为,方便开发者快速构建应用。
什么是本地通知
本地通知指应用在前台或后台运行时,由 IMKit 或应用客户端直接调用系统接口创建并发送的通知。IMKit SDK 内部已经实现了本地通知功能,当应用处于后台接收到新消息时,IMKit 默认会在通知面板弹出通知提醒,即本地通知。
IMKit 的本地通知已支持以下场景:
-
当 App 刚进入后台时(仍处于后台活跃状态):App 进入后台,SDK 的长连接最多存活 2 分钟,超时会主动断开。在进入后台 2 分钟内,IMKit 仍可通过长连接通道接收到新消息(撤回消息也会产生撤回信令消息)。接到新消息后,IMKit 默认会创建并弹出通知,即本地通知。
提示App 在后台进入非活跃状态后(例如,被系统杀死),IMKit 与服务端断开连接。如果应用已集成 APNs 推送服务,此时可通过接收推送通知。推送通知由系统直接创建并弹出,不属于本文所述的本地通知。
-
当 App 处于前台,且未打开任何会话页面时(未与任何人聊天),接收 新消息后默认会响铃并震动,但不弹通知。
如果需要在 App 处于后台且存活时使用 SDK 默认的本地通知提醒,您必须实现用户/群组/群名片信息提供者相关协议,并返回正确的用户信息或群组信息。详见用户信息。
设置前台铃声提示
当 App 处于前台时,默认会播放消息提示音,您可以通过将此属性设置为 YES
,关闭所有的前台消息提示音。
RCKitConfigCenter.message.disableMessageAlertSound = YES;
关闭本地通知
IMKit 默认本地通知功能是开启的,如果需要关闭请参考:
RCKitConfigCenter.message.disableMessageNotificaiton = YES;
自定义本地通知
IMKit 在弹出本地通知前会触发消息接收监听器的回调方法。实现消息接收监听器的如下代理方法并返回 YES
,SDK 针对此消息就不再弹默认的本地通知提示,您可以自行处理。
如果 App 未实现用户/群组/群名片信息提供者,则 IMKit SDK 无法获取消息的用户/群组/群名片信息,无法触发该回调方法。
@protocol RCIMReceiveMessageDelegate <NSObject>
@optional
- (BOOL)onRCIMCustomLocalNotification:(RCMessage *)message withSenderName:(NSString *)senderName;
@end
参数 | 类型 | 描述 |
---|---|---|
message | RCMessage | 接收到的消息 |
senderName | NSString | 消息发送者的用户名称 |