uni-app 透传推送 创建本地通知无声音振动 点击通知无法切换App到前台

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

uni-app 透传推送 创建本地通知无声音振动 点击通知无法切换App到前台

开发环境 版本号 项目创建方式
Windows Windows 10 HBuilderX
10 专业版
19045.3324
PC HBuilderX
正式
4.24
手机 Android
Android 14
OPPO
OPPO FindX3
页面 Vue
Vue3

操作步骤:

  • plus.push.createMessage(msg.content, msg.payload, {title: msg.title}); 创建本地通知

预期结果:

  • 有声音与震动,点击通知能够切换App到前台

实际结果:

  • 没有声音与震动,点击通知之后不能切换App到前台

bug描述:

Android上收到透传消息,根据自己业务创建本地推送:

  1. 没有声音和振动
    • plus.push.createMessage(msg.content, msg.payload, {title: msg.title});,没有声音和振动,到通知中设置了各个通道的振动与声音为打开,依然没有震动与声音。也试过另一个API调用也没有效果:
      uni.createPushMessage({
        title: msg.title,
        content: msg.content,
        when: new Date(),
        cover: true,
        payload: {},
        success: () => {
          console.log("创建通知成功")
        },
        fail: (e) => {
          console.log("创建通知失败", e)
        }
      })
      

2 回复

在 uni-app 中实现透传推送并创建本地通知时,确保通知没有声音和振动,同时点击通知能够切换到应用前台,需要配置相关的推送服务和本地通知参数。以下是一个基本的实现思路和代码示例。

1. 配置推送服务

首先,确保你已经集成了推送服务(如 DCloud 提供的 uniPush 或其他第三方推送服务)。在 manifest.json 中配置推送权限:

"mp-weixin": {
  "appid": "YOUR_APPID",
  "setting": {
    "request": {
      "permissions": [
        "scope.userLocation",
        "onMenuShareTimeline",
        "onMenuShareAppMessage"
      ]
    },
    "urlCheck": false
  },
  "usingComponents": true,
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  },
  "requiredPrivateInfos": ["getUserInfo"]
},
"plugins": {
  "push": {
    "version": "版本号",
    "provider": "推送服务提供商"
  }
}

2. 接收透传消息并创建本地通知

在 App.vue 的 onLaunchonShow 中监听透传消息,并创建本地通知:

export default {
  onLaunch() {
    // 监听透传消息
    plus.push.addEventListener('receive', function(msg) {
      if (msg.aps && msg.aps.contentAvailable === 1) {
        // 透传消息处理
        const title = '通知标题';
        const content = '通知内容';
        
        // 创建本地通知
        plus.notification.create({
          title: title,
          content: content,
          extras: {
            custom_data: msg.payload // 透传数据
          },
          sound: '', // 无声音
          vibrate: false, // 无振动
          autoCancel: true, // 点击后取消通知
          onclick: function(event) {
            // 点击通知切换到前台
            plus.runtime.launchApp({
              action: 'home' // 可指定跳转到特定页面
            });
          }
        });
      }
    });
  }
}

3. 确保应用有前台显示权限

确保应用具有在后台接收通知并显示前台的权限。这通常在应用安装时由用户授予。

注意事项

  • 确保推送服务已正确集成,并且在服务器端正确发送透传消息。
  • 本地通知的 extras 字段可用于传递透传数据,点击通知后可以在 onclick 事件中处理这些数据。
  • plus.runtime.launchApp 方法用于将应用从后台切换到前台,action 参数可用于指定跳转到特定页面。

通过上述代码,你可以实现 uni-app 中透传推送创建本地通知无声音和振动,同时点击通知能够切换到应用前台的功能。

回到顶部