uni-app 小米个推透传推送 plus.push.createmessage() 无法创建消息

uni-app 小米个推透传推送 plus.push.createmessage() 无法创建消息

示例代码:

plus.push.addEventListener( ‘receive’, function(msg) { plus.push.createMessage
receive事件 }


### 操作步骤:


服务端推送个推透传消息, app.vue  
plus.push.addEventListener(
'receive',
function(msg) {  
  里面创建本地消息不成功
}

预期结果:

期望推送成功


### 实际结果:


创建本地消息不成功

bug描述:

【报Bug】小米个推透传推送,plus.push.createmessage() 无法创建消息

plus.push.addEventListener( ‘receive’, function(msg) {
运行到这里,下面的创建不了消息
plus.push.createMessage
}

表格

信息类型 内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.2.3
手机系统 Android
手机系统版本号 Android 10
手机厂商 小米
手机机型 Mi 8
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app 小米个推透传推送 plus.push.createmessage() 无法创建消息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

请问这个问题解决了嘛?

更多关于uni-app 小米个推透传推送 plus.push.createmessage() 无法创建消息的实战教程也可以访问 https://www.itying.com/category-93-b0.html


请问解决了吗?我现在也遇到了这个问题‘

根据你提供的信息,问题出现在小米设备上使用个推透传推送时,plus.push.createMessage()receive 事件回调中无法创建本地消息。这通常与透传消息的处理机制及平台限制有关。

核心原因分析:

  1. 透传消息特性:个推的透传消息(Payload)不会自动显示为通知栏消息,需要客户端在 receive 事件中手动调用 createMessage 创建本地通知。
  2. 小米平台限制:小米MIUI系统对后台进程和通知管理较为严格。当App处于后台或被杀进程时,receive 事件可能无法正常触发或执行代码,导致 createMessage 调用失败。
  3. 生命周期问题receive 事件触发时,若App处于非活跃状态,部分API调用可能受限。

解决方案:

  1. 确保权限配置
    • manifest.json 中正确配置推送权限和厂商通道(小米)。示例:
      "permissions": {
          "Push": {
              "description": "推送权限"
          }
      },
      "distribute": {
          "android": {
              "permissions": ["<uses-permission android:name=\"android.permission.INTERNET\"/>"],
              "push": {
                  "igexin": {
                      "appid": "你的个推AppID",
                      "appkey": "你的个推AppKey",
                      "appsecret": "你的个推AppSecret"
                  },
                  "xiaomi": {
                      "appid": "小米AppID",
                      "appkey": "小米AppKey"
                  }
              }
          }
      }
      
  2. 检查消息格式:确保服务端推送的透传消息格式正确,且 payload 字段包含有效数据(如标题、内容)。示例:
    {
        "title": "测试标题",
        "content": "测试内容",
        "payload": "自定义数据"
    }
    
  3. 添加异常处理与日志:在 receive 事件中捕获错误并输出日志,便于定位问题:
    plus.push.addEventListener('receive', function(msg) {
        console.log('收到推送:', JSON.stringify(msg));
        try {
            plus.push.createMessage(msg.content, msg.payload, {
                title: msg.title
            });
            console.log('本地消息创建成功');
        } catch (e) {
            console.error('创建消息失败:', e);
        }
    });
回到顶部