uni-app 更新个推api消息推送接口(/push/single/alias)的intent参数后 android无法触发离线消息点击事件 vivo无法接受离线消息
uni-app 更新个推api消息推送接口(/push/single/alias)的intent参数后 android无法触发离线消息点击事件 vivo无法接受离线消息
| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| HBuilderX | 3.4.7 | - |
产品分类:HTML5+
操作步骤:
- 使用intent设置前的配置:
intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=com.xxx.xxxx/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload={payLoad};end
点击离线通知可以触发click事件,一切正常;
- 修改intent设置后:
intent://com.getui.push/detail?#Intent;scheme=gtpushscheme;launchFlags=0x4000000;package=com.xxx.xxx;component=com.xxx.xxx/io.dcloud.PandoraEntry;S.payload={payLoad};end
点击Android设备离线通知无法触发click事件;
预期结果:
- vivo手机正常接收离线通知,且Android设备可以正常触发离线click事件
实际结果:
- 点击Android设备离线通知无法触发click事件;
bug描述:
3月4日个[Android SDK更新邮件](https://docs.getui.com/getui/mobile/vendor/androidstudio/?id=doc-title-5)后,更改个推api消息推送接口(/push/single/alias)的intent参数,android无法触发离线消息点击事件,vivo无法接受接受离线消息;目前测试了安卓手机有(荣耀:OXF-AN00、华为:HWI-AL00、红米note8);
- intent设置前:
intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=com.xx.xxx/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload={payLoad};end
- intent设置后:
intent://com.getui.push/detail?#Intent;scheme=gtpushscheme;launchFlags=0x4000000;package=com.xxx.xxx;component=com.xxx.xxx/io.dcloud.PandoraEntry;S.payload={payLoad};end
设置前,android、ios及鸿蒙系统收到在线及离线消息,消息都能触发点击事件,进入消息列表
设置后,ios正常,但android及鸿蒙收到离线消息后,无法触发点击事件,只能进入app;vivo收不到离线消息;
备注:package、component在帖子中用xxx表示;
intent应该为
intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end
而不是
intent://com.getui.push/detail
文档:https://ask.dcloud.net.cn/article/35622
在 uni-app
中使用个推(Getui)进行消息推送时,如果更新了 /push/single/alias
接口的 intent
参数后,出现 Android 设备无法触发离线消息点击事件,或者 vivo 设备无法接收离线消息的问题,可能是由于以下原因导致的。以下是一些排查和解决方案:
1. 检查 intent
参数格式
- 问题:
intent
参数格式不正确可能导致 Android 设备无法解析,从而无法触发点击事件。 - 解决方案:
- 确保
intent
参数符合个推的格式要求。通常,intent
是一个包含action
、data
等信息的 URI 字符串。 - 示例:
{ "intent": "intent://your.app/action#Intent;scheme=your_scheme;package=your.package.name;end" }
- 确保
package
和scheme
与你的应用配置一致。
- 确保
2. 检查离线消息配置
- 问题:vivo 设备无法接收离线消息,可能是由于个推的离线消息配置未正确设置。
- 解决方案:
- 在个推控制台中,确保已为 vivo 设备配置了离线消息推送的权限。
- 检查个推 SDK 的初始化代码,确保已正确配置
offline
参数。 - 示例:
plus.push.getClientInfo().then(info => { console.log('Push client info:', info); });
3. 检查 Android 设备权限
- 问题:Android 设备可能缺少必要的权限,导致无法触发点击事件。
- 解决方案:
- 确保在
AndroidManifest.xml
中声明了以下权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" />
- 确保应用已获取通知权限,可以在应用启动时动态请求权限:
plus.android.requestPermissions(['android.permission.POST_NOTIFICATIONS'], successCallback, errorCallback);
- 确保在
4. 检查个推 SDK 版本
- 问题:个推 SDK 版本过旧可能导致兼容性问题。
- 解决方案:
- 更新个推 SDK 到最新版本。
- 在
uni-app
项目中,确保manifest.json
中配置的个推插件版本是最新的。
5. 检查 vivo 设备的推送通道
- 问题:vivo 设备对推送通道有特殊要求,可能需要单独配置。
- 解决方案:
- 在个推控制台中,确保已为 vivo 设备配置了推送通道。
- 在
AndroidManifest.xml
中,添加 vivo 推送通道的配置:<meta-data android:name="com.vivo.push.api_key" android:value="your_vivo_api_key" /> <meta-data android:name="com.vivo.push.app_id" android:value="your_vivo_app_id" />
6. 调试日志
- 问题:无法确定具体问题原因。
- 解决方案:
- 在个推 SDK 中启用调试日志,查看推送过程中的错误信息。
- 示例:
plus.push.setLogEnabled(true);