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描述:
34日个[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

设置前,androidios及鸿蒙系统收到在线及离线消息,消息都能触发点击事件,进入消息列表
设置后,ios正常,但android及鸿蒙收到离线消息后,无法触发点击事件,只能进入appvivo收不到离线消息;

备注:packagecomponent在帖子中用xxx表示;
2 回复

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 是一个包含 actiondata 等信息的 URI 字符串。
    • 示例:
      {
        "intent": "intent://your.app/action#Intent;scheme=your_scheme;package=your.package.name;end"
      }
    • 确保 packagescheme 与你的应用配置一致。

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);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!