uniapp 应用 收到unipush推送消息点击无法唤起应用问题。

通知栏展示了在线的透传推送消息,我测试了小米,荣耀等机型点击消息后都可以唤起应用,但是华为手机无法唤起应用,监听到的透传消息内容一样:

img


通过点击通知消息触发click后打印的内容也是一致的。

在 uniapp 应用中,收到 unipush 推送点击消息时,无法自动唤起应用,这是因为:
uniapp 框架的应用是跨平台的,并不直接编译成 Android/iOS 真机应用,而是在运行时通过 WebView 加载 uniapp 代码。
所以,当点击 unipush 推送消息时,系统无法找到对应的原生应用来唤起。
要解决这个问题,有两种方案:

  1. 在 manifest.json 中配置 launchingActivity,指向 App 启动页,如:
    json
    "android": {
    "launcherActivity": ".MainActivity"
    }
    然后在 App 启动页 MainActivity 中接收推送消息点击事件,并唤起 uniapp 页面。
  2. 使用 unipush 提供的自定义接收器功能,在接收器代码中唤起 uniapp 页面。
    Uniapp 开发文档对此也有相关说明,参见:https://uniapp.dcloud.io/unipush/android?id=%E6%B6%88%E6%81%AF%E7%82%B9%E5%87%BB%E5%90%8E%E6%97%A0%E6%B3%95%E5%94%A4%E8%B5%B7%E5%BA%94%E7%94%A8%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88
    所以,解决 uniapp 应用收到 unipush 消息点击无法唤起的方案是:
  3. 配置 Android manifest 文件的 launchingActivity
  4. 实现 unipush 自定义接收器,在接收器代码中唤起 uniapp 页面