跳到主要内容

关于本地通知

IMLib SDK 未实现本地通知功能,需要您在业务层自行实现本地通知。

提示
  • 当 App 刚进入后台时, App 处于后台活跃状态,SDK 通过长连接通道接收消息,此时 SDK 收到消息会触发消息接收监听。您可以在收到消息监听通知时弹出本地通知。关于消息监听器的说明,详见接收消息
  • App 进入后台后,受到系统限制,IMLib SDK 的长连接最多存活 2 分钟,超时或者应用被系统挂起会主动断开。断开后如有消息会通过 APNs 推送通道推送通知。

由于超级群产品本身的业务特性,App 可能需要配合免打扰级别(详见超级群免打扰功能概述)功能,实现精细化的本地通知控制策略。 当前 IMLib SDK 获取免打扰的 API 是异步的,每次都从数据库中获取,可能会造成一定延迟,无法满足部分 App 对本地通知处理的要求。如果您希望实现从内存中获取免打扰级别数据,可以参考以下实现方案:

  1. 业务层封装一个查询方法,比如给自定义类 RCMessageNotificationHelper 定义一个 checkNotifyAbilityWith 方法,查询该消息是否需要显示本地通知。

  2. 业务层持有一个全局的 NSDictionary 数据表,用于缓存查询过的会话的免打扰信息,如果内存中查询失败,会执行一次数据库查找并更新全局数据表。

  3. IMLib SDK 中,您可以在接收消息的回调中(onRCIMReceiveMessage)调用 checkNotifyAbilityWith 方法,查询接收到的消息是否需要显示本地通知。

Objective C
- (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left {
[RCDMessageNotificationHelper checkNotifyAbilityWith:message completion:^(BOOL show) {
if (show) {
NSLog(@"[RC] Show");
} else {
NSLog(@"[RC] Hide");
}
}];
}

本地通知判断是否显示优先级逻辑:消息配置> 用户应用全局 > 用户指定群组频道 > 用户指定群 > 用户会话类型 > 超级群默认配置