本地通知
IMKit 已实现本地通知的创建、弹出行为,方便开发者快速构建应用。
什么是本地通知
本地通知指应用在前台运行时,由 IMKit 或应用客户端直接调用系统接口创建并发送的通知 (Notification)。IMKit SDK 内部已经实现了本地通知功能 (Notification),当应用处于前台接收到新消息时,IMKit 默认会在通知面板弹出通知提醒,即本地通知。
IMKit 的本地通知已支持以下场景:
-
当 App 当应用转为后台时,无法弹出本地通知Notification Kit,本地通知发布通道关闭,开发者需要接入Push Kit进行云侧离线通知的发布。
提示如果应用已集成第三方厂商推送服务,此时可通过接收推送通知。来自第三方厂商的离线推送通知一般由推送厂商直接创建并弹出,不属于本文所述的本地通知。
-
当 App 处于前台,SDK 接收新消息后便会构建通知,但通知响铃、震动与否,由手机系统设置中应用的通知管理来决定。
拦截本地通知
目前只要 SDK 判断 App 在前台,并且非免打扰状态,便会弹出通知。
应用在本地通知显示前对通知进行拦截。IMKit 支持在拦截修改 Message
后继续弹出本地通知。
如果需要更多 自定义效果,建议完全拦截,由应用程序自行接管并弹出本地通知。请在初始化之后,建立 IM 连接之前设置监听器。
- 从
1.4.3
版本开始,支持使用以下方法设置拦截器。
let notificationInterceptor: NotificationInterceptor = {
onWillHandleMessage: (message: Message) => {
// 返回 true 则 SDK 不会处理,不会展示通知
return true
}
}
// 设置拦截器
RongIM.getInstance().notificationService().setNotificationInterceptor(notificationInterceptor)
// 移除拦截器
RongIM.getInstance().notificationService().removeNotificationInterceptor(notificationInterceptor)
本地通知展示样式
目前暂不支持自定义本地通知展示样式,如果需要自定义,则需要拦截本地通知自行处理。
本地通知铃声与震动
当 App 处于前台,SDK 接收新消息后便会构建通知,但通知响铃、震动与否,由手机系统设置中应用的通知管理来决定。
目前暂不支持自定义本地通知是否响铃与震动,如果需要自定义,则需要拦截本地通知自行处理。
本地通知点击事件
点击本地通知时,SDK 默认跳转到当前应用的入口的 UIAbility
,可以在 UIAbility
的 onNewWant
方法中拿到通知附带的参数。
目前暂不支持自定义点击时的跳转事件,如果需要自定义跳转事件或者不进行跳转,则需要拦截本地通知自行处理。
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
if (want.parameters) {
let params: Record<string, object> = want.parameters as Record<string, object>
if (params) {
let conversationType = params['conversationType']
let targetId = params['targetId']
let fromUserId = params['fromUserId']
let objectName = params['objectName']
let msgTime = params['msgTime']
let msgUid = params['id']
}
}
}