uni-app 安卓手机plus.push.addEventListener(receive)无法获取到push信息

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app 安卓手机plus.push.addEventListener(receive)无法获取到push信息

信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 11
HBuilderX类型 Alpha
HBuilderX版本号 3.8.12
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 全部安卓机型
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 正常操作

预期结果:

  • 跟ios一样

实际结果:

  • 安卓有问题

bug描述:

  • plus.push.addEventListener(receive) 获取创建的本地消息,苹果在回调里可以正常打印出信息,安卓不行根本不走方法,请问怎么解决

8 回复

unipush 2.0?在线接受不到? 用uni.onPushMessage试试呢


push1.0安卓接收不到

回复 传播星球: 1.0不太熟悉,看看文档吧 https://docs.getui.com/getui/question/android/

找到原因了嘛

没有,放弃了

回复 传播星球:后台用的阿里云推送 然后前端用的uni-push的方法 ios可以 安卓都不知道怎么搞

uni-app 中使用 plus.push.addEventListener('receive') 无法获取到推送信息,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:

1. 检查推送服务配置

确保你已经在 manifest.json 中正确配置了推送服务。例如,如果你使用的是个推(GeTui)或极光推送(JPush),需要在 manifest.json 中配置相应的 AppKey 和 AppSecret。

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.INTERNET\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
          "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
          "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.VIBRATE\"/>"
        ],
        "push": {
          "geitui": {
            "appid": "your-appid",
            "appkey": "your-appkey",
            "appsecret": "your-appsecret"
          }
        }
      }
    }
  }
}

2. 检查推送服务是否初始化成功

App.vuemain.js 中,确保推送服务已经成功初始化。你可以在 onLaunch 生命周期中检查推送服务是否初始化成功。

export default {
  onLaunch: function() {
    // 初始化推送服务
    plus.push.addEventListener('receive', function(msg) {
      console.log('接收到推送消息:', msg);
    }, false);

    // 检查推送服务是否初始化成功
    plus.push.getClientInfo(function(info) {
      console.log('推送服务信息:', info);
    }, function(e) {
      console.log('获取推送服务信息失败:', e);
    });
  }
}

3. 检查设备是否支持推送

确保你的设备支持推送服务,并且已经正确连接到网络。你可以在设备上检查网络连接状态,并确保设备能够正常访问推送服务器。

4. 检查推送消息格式

确保你发送的推送消息格式正确,并且符合推送服务的要求。不同的推送服务可能有不同的消息格式要求,请参考相应的文档。

5. 检查权限

确保你的应用已经获取了必要的权限,例如网络访问权限、振动权限等。你可以在 AndroidManifest.xml 中检查并添加必要的权限。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />

6. 检查推送服务是否被禁用

有些设备可能会禁用推送服务,或者将应用的后台运行权限限制。你可以在设备的设置中检查应用的权限设置,并确保应用能够正常接收推送消息。

7. 调试日志

在开发过程中,可以通过 console.loguni.showToast 等方式输出调试信息,帮助你定位问题。

plus.push.addEventListener('receive', function(msg) {
  console.log('接收到推送消息:', msg);
  uni.showToast({
    title: '接收到推送消息',
    icon: 'none'
  });
}, false);

8. 检查推送服务 SDK 版本

确保你使用的推送服务 SDK 版本是最新的,并且与 uni-app 版本兼容。你可以参考 uni-app 官方文档和推送服务提供商的文档,确保 SDK 版本正确。

9. 检查推送服务是否正常运行

你可以通过推送服务提供商的控制台或 API 发送测试消息,检查推送服务是否正常运行。如果推送服务本身有问题,可能需要联系推送服务提供商进行排查。

10. 检查应用是否在前台

plus.push.addEventListener('receive') 通常用于接收应用在前台时的推送消息。如果应用在后台或关闭时无法接收到推送消息,可能需要使用 plus.push.addEventListener('click') 来处理点击通知栏消息的事件。

plus.push.addEventListener('click', function(msg) {
  console.log('点击推送消息:', msg);
  uni.showToast({
    title: '点击推送消息',
    icon: 'none'
  });
}, false);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!