跳到主要内容

本地通知

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