全部文档

更新时间: 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

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

# 通知自定义

当前 IMKit 无法满足您的需求, 可进行通知相关的自定义.

# 注册广播
  1. 创建 xxxPushMessageReceiver 集成 PushMessageReceiver 类.
class MyPushMessageReceiverd extends PushMessageReceiver {
    ...
}

已复制
1
2
3
4
  1. 在主工程的 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

# 自定义通知

# 自定义通知栏

当 SDK 中默认通知栏无法满足需求, 可自定义通知栏.

  1. 创建 CustomPushMessageReceiver 集成 PushMessageReceiver 类.
class CustomPushMessageReceiver extends PushMessageReceiver {
    ...
}

已复制
1
2
3
4
  1. 在主工程的 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
  1. 注册完成广播后, 可在创建的 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
# 自定义通知点击事件

当 SDK 中默认跳转无法满足需求, 可自定义跳转.

  1. 创建 CustomPushMessageReceiver 集成 PushMessageReceiver 类.
class CustomPushMessageReceiver extends PushMessageReceiver {
    ...
}

已复制
1
2
3
4
  1. 在主工程的 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
  1. 注册完成广播后, 可在创建的 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

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助