集成融云推送插件
融云提供的推送插件,依赖 WebLib SDK,开发者在集成推送插件前必须集成了 WebLib SDK 或 uni-app 的 IMKit SDK。
集成步骤
1. 集成插件
-
点击打开 RCIM-Push-Wrapper,点击
下载插件并导入 HBuilderX
按钮,将插件导入项目中。 -
导入成功后,在项目根目录下可看到
uni_modules
目录下有 RCIM-Push-Wrapper 和 RCIM-Push 目录,如下图所示:
2. 配置 Android 推送
在您的 uni-app 项目根目录创建以下文件结构:
nativeResources/
└── android/
└── manifestPlaceholders.json
在 manifestPlaceholders.json
文件中配置 Android 推送参数。如果该文件已存在,直接添加相关配置即可。
{
"XIAOMI_APP_ID": "xxx",
"XIAOMI_APP_KEY": "xxx",
"HW_PUSH_ENABLE" : "true",
"HONOR_APP_ID": "xxx",
"OPPO_APP_KEY": "xxx",
"OPPO_APP_SECRET": "xxx",
"VIVO_APP_ID": "xxx",
"VIVO_APP_KEY": "xxx",
"MEIZU_APP_ID": "xxx",
"MEIZU_APP_KEY": "xxx"
}
小米推送
- 参考在控制台配置小米推送配置小米推送信息。
- 在
manifestPlaceholders.json
文件中配置XIAOMI_APP_ID
和XIAOMI_APP_KEY
。
华为推送
-
参考在控制台配置华为推送配置华为推送信息。
-
在
manifestPlaceholders.json
文件中配置HW_PUSH_ENABLE
为true
。 -
根据华为开发者文档集成 HMS Core SDK,您需要将 "agconnect-services.json" 文件添加到您的 App 中。点击 agconnect-services.json 下载配置文件。
-
将下载好的
agconnect-servics.json
文件放到项目nativeResources/android
目录下,如下图:
荣耀推送
-
参考在控制台配置荣耀推送配置荣耀推送信息。
-
在
manifestPlaceholders.json
文件中配置HONOR_APP_ID
。 -
登录荣耀开发者服务平台,单击应用管理,在应用列表中找到目标应用,单击应用详情。在应用基础信息查看页面的 SDK 配置区域,下载
mcs-services.json
配置文件。 -
将下载好的
mcs-servics.json
文件拷贝到项目nativeResources/android
目录下,如下图:
OPPO 推送
- 参考在控制台配置 OPPO 推送配置 OPPO 推送信息。
- 在
manifestPlaceholders.json
文件中配置OPPO_APP_KEY
和OPPO_APP_SECRET
。
VIVO 推送
- 参考在控制台配置 vivo 推送配置 vivo 推送信息。
- 在
manifestPlaceholders.json
文件中配置VIVO_APP_ID
和VIVO_APP_KEY
。
魅族推送
- 参考在控制台配置魅族推送配置魅族推送信息。
- 在
manifestPlaceholders.json
文件中配置MEIZU_APP_ID
和MEIZU_APP_KEY
。
3. 配置 iOS 推送
- 了解 融云服务端对 APNs 的支持。
- 参考 Apple 开发者账户的操作 创建推送证书。
- 参考 在融云控制台配置 APNs 推送。
- 参考 创建 Provisioning Profile 文件 创建 Provisioning Profile 文件,并使用该文件打包 app。
4. 制作自定义调试基座
使用推送插件必须制作自定义基座,点击 HBuilderX 菜单栏的 运行
> 运行到手机或模拟器
,选择 制作自定义基座
选项,使用相应的证书制作 Android 或 iOS 自定义调试基座。
使用步骤
1. 导入推送插件
示例如下:
import * as RCPush from '@/uni_modules/RCIM-Push-Wrapper'
2. 添加推送回调事件
在调用 registerPush
方法注册推送前,即可添加推送回调事件。
以下回调事件开发者可根据自己需要选择添加。
点击查看推送回调事件
获取推送标识回调事件
开发者可通过 setOnPushTokenReceivedListener
方法监听获取推送标识回调事件。
当获取到推送标识后,会触发该回调事件。开发者如需使用其他三方推送时,可通过此回调获取到设备推送标识。
RCPush.setOnPushTokenReceivedListener((res) => {
if (res.code === 0) {
// 获取推送标识成功
const { pushType, token } = res.data;
// pushType 为推送类型,token 为推送标识
} else {
// 获取推送标识失败
console.error(res.message);
}
});
推送消息点击回调事件
开发者可通过 setOnPushClickedListener
方法监听推送消息点击回调事件。
当收到推送消息时,点击推送消息,会触发该回调事件。
- iOS 端仅在 app 关闭时点击推送打开 app 后才会触发该回调事件。
- Android 端在 IM 断开连接后,app 无论是关闭还是打开状态,点击推送消息都会触发该回调事件。
RCPush.setOnPushClickedListener((res) => {
if (res.code === 0) {
// 推送消息点击成功
} else {
// 推送消息点击失败
console.error(res.message);
}
});
推送标识上报结果回调事件
开发者可通过 setOnPushTokenReportResultListener
方法监听推送标识上报是否成功。
当推送标识上报结果回调事件触发时,会触发该回调事件。开发者可通过该回调事件获取到推送标识上报结果。
- 只有 Android 端会回调此事件,iOS 端不会触发此回调。
- 推送标识上报成功后,该事件只会触发一次,如果推送标识或用户信息未发生变化,则不会重复上报推送标识。
RCPush.setOnPushTokenReportResultListener((res) => {
if (res.code === 0) {
// 推送标识上报成功
} else {
// 推送标识上报失败
console.error(res.message);
}
});
3. 注册推送
在 WebLib 调用 init 之后,调用 connect 接口连接 IM 之前,调用 registerPush
方法注册推送。
切换用户时无需重复调用 registerPush
方法。
为了便于开发者调试,在注册推送时可通过 logLevel
设置控制台日志输出级别。默认级别为 2,输出警告日志。
点击查看日志级别
日志级别 | 描述 |
---|---|
0 | 不输出日志 |
1 | 输出错误日志 |
2 | 输出警告日志 |
3 | 输出信息日志 |
4 | 输出调试日志 |
调用示例如下:
// 初始化 IM
RongIMLib.init({appKey: 'xxx'});
// 注册推送
RCPush.registerPush({ logLevel: 4 }).then(res => {
if (res.code === 0) {
// 注册推送成功
} else {
// 注册推送失败
console.error(res.message);
}
});
// 连接 IM
RongIMLib.connect().then(res => {
if (res.code === 0) {
// 连接 IM 成功
} else {
// 连接 IM 失败
}
});
4. 断开连接
在断开连接时,不设置任何参数默认为断开连接后接收离线推送。
可设置 disablePush 为 true 表示用户断开连接后不再接收离线推送。
调用示例如下:
// 断开连接后默接收离线推送
RongIMLib.disconnect();
// disablePush 在第二个参数,true 表示断开连接时不再接收推送。第一个参数传 null 即可。
RongIMLib.disconnect(null, true);
5. 测试消息推送
建议先使用比较简单的单聊场景测试推送。步骤如下:
- 按照以上步骤配置并注册推送后,重新自定义调试基座运行 app,在连接 IM 成功后查看推送标识上报结果回调是否成功,如成功,则表示推送配置成功。 确认配置成功后杀掉 App 进程。
- 访问融云控制台的 IM Server API 调试页面,找到消息 > 消息服务 >发送单聊消息,直接给当前 App 用户发送一条单聊消息内容。
- 查看手 机是否收到推送。
故障排查
如果未能收到推送,请先检查以下项目:
- 如果客户端断开连接时设置了不允许推送,例如调用
disconnect(null, true)
方法,则会彻底注销在融云服务端的登录信息。融云服务端仅记录离线消息,但不会触发推送服务。 - 如果 App 用户已在 Web/PC 端在线,此时融云认为用户在线,默认不会给移动端发送推送通知。如有需要,您可以在控制台免费基础功能页面调整 Web/PC 在线手机端接收 Push 开关设置。
- 如果 App 用户使用多台移动端设备,融云服务端仅向最后一个登录的设备发送推送通知。
您可以通过融云控制台的「北极星」查看消息发送与接收状态,以及具体的推送错误: