更新时间: 2021-03-08
# 功能描述
IMKit SDK 内部已经实现了本地通知功能(Notification).
# 通知点击跳转配置
IMKit SDK 内部通知栏点击跳转主要有两种实现逻辑. 点击融云通知时,融云 SDK 会以隐式调用的方式发出相应 intent,从而唤起对应 activity。需要在 AndroidManifest.xml 里进行如下配置:
a. 只有一个联系人发来一条或多条通知时,点击通知默认跳转到会话 activity。在会话 activity 中配置如下 intnt-filter 即可拦截该事件。
<activity android:name="您的会话 activity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host=""${applicationId}"" android:pathPrefix="/conversation/" android:scheme="rong" /> </intent-filter> </activity>
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
b. 多个联系人发来多条通知时,这些通知会折叠显示,点击该通知会跳转到会话列表 activity。在 AndroidManifest.xml 的会话列表 activity 中配置如下 intent-filter 进行拦截。
<activity android:name="您的会话列表 activity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host=""${applicationId}"" android:pathPrefix="/conversationlist" android:scheme="rong" /> </intent-filter> </activity>
已复制
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 通知自定义
当前 IMKit 无法满足您的需求, 可进行通知相关的自定义.
# 注册广播
- 创建 xxxPushMessageReceiver 集成 PushMessageReceiver 类.
class MyPushMessageReceiverd extends PushMessageReceiver { ... }
已复制
1
2
3
4
2
3
4
- 在主工程的 AndroidManifest.xml 中注册广播组件.
<receiver android:name="xxx.MyPushMessageReceiverd" android:exported="true"> <intent-filter> <action android:name="io.rong.push.intent.MESSAGE_ARRIVED" /> <action android:name="io.rong.push.intent.MESSAGE_CLICKED" /> <action android:name="io.rong.push.intent.THIRD_PARTY_PUSH_STATE" /> </intent-filter> </receiver>
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 自定义通知
# 自定义通知栏
当 SDK 中默认通知栏无法满足需求, 可自定义通知栏.
- 创建 CustomPushMessageReceiver 集成 PushMessageReceiver 类.
class CustomPushMessageReceiver extends PushMessageReceiver { ... }
已复制
1
2
3
4
2
3
4
- 在主工程的
AndroidManifest.xml
中注册广播组件.
<receiver android:name="xxx.CustomPushMessageReceiver" android:exported="true"> <intent-filter> <action android:name="io.rong.push.intent.MESSAGE_ARRIVED" /> <action android:name="io.rong.push.intent.MESSAGE_CLICKED" /> <action android:name="io.rong.push.intent.THIRD_PARTY_PUSH_STATE" /> </intent-filter> </receiver>
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 注册完成广播后, 可在创建的 CustomPushMessageReceiver 类中复写 onNotificationMessageArrived 方法. 在此方法中做拦截, 然后实现跳转逻辑.
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
context | Context | 是 | 上下文对象 | |
pushType | PushType | 是 | 推送类型 | |
notificationMessage | PushNotificationMessage | 是 | 推送消息 |
class CustomPushMessageReceiver extends PushMessageReceiver { @Override public boolean onNotificationMessageArrived(Context context, PushType pushType, PushNotificationMessage notificationMessage) { // 可通过 pushType 判断 Push 的类型 if (pushType == PushType.RONG) { //实现您自定义的通知点击跳转逻辑 return true; // 此处返回 true. 代表不触发 SDK 默认实现,您自定义处理通知点击跳转事件。 } return false; } }
已复制
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 自定义通知点击事件
当 SDK 中默认跳转无法满足需求, 可自定义跳转.
- 创建 CustomPushMessageReceiver 集成 PushMessageReceiver 类.
class CustomPushMessageReceiver extends PushMessageReceiver { ... }
已复制
1
2
3
4
2
3
4
- 在主工程的
AndroidManifest.xml
中注册广播组件.
<receiver android:name="xxx.CustomPushMessageReceiver" android:exported="true"> <intent-filter> <action android:name="io.rong.push.intent.MESSAGE_ARRIVED" /> <action android:name="io.rong.push.intent.MESSAGE_CLICKED" /> <action android:name="io.rong.push.intent.THIRD_PARTY_PUSH_STATE" /> </intent-filter> </receiver>
已复制
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 注册完成广播后, 可在创建的 CustomPushMessageReceiver 类中复写 onNotificationMessageClicked 方法. 在此方法中做拦截, 然后实现跳转逻辑.
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
context | Context | 是 | 上下文对象 | |
pushType | PushType | 是 | 推送类型 | |
notificationMessage | PushNotificationMessage | 是 | 推送消息 |
class CustomPushMessageReceiver extends PushMessageReceiver { @Override public boolean onNotificationMessageClicked(Context context, PushType pushType, PushNotificationMessage notificationMessage) { if (pushType == PushType.RONG) { //实现您自定义的通知点击跳转逻辑 return true; // 此处返回 true. 代表不触发 SDK 默认实现,您自定义处理通知点击跳转事件。 } return false; } }
已复制
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11