berlinliu
berlinliu
  • 发布:2020-08-25 19:45
  • 更新:2020-11-03 15:46
  • 阅读:1748

【报Bug】华为手机收不到推送数字角标提示

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 10.15.6

HBuilderX类型: 正式

HBuilderX版本号: 2.6.5

手机系统: Android

手机系统版本号: Android 8.0

手机厂商: 华为

手机机型: 华为荣耀X10

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: http://app.mi.com/details?id=io.dcloud.sealguard

操作步骤:

『/*
推送代码

  • 在App.vue中onLaunch中调用这个方法
  • @param {(payload) => void} handler
    */
    export const monitorPush = handler => {
    // #ifdef APP-PLUS
    const _handlePush = function(message, source) {
    const { globalData } = getApp()
    if (!globalData || globalData.isBackground == null) {
    uni.showModal({
    content:
    '使用推送,请在App.vue中定义globalData.isBackground,然后在对应的应用生命周期中,改变这个bool值'
    })
    return
    }
    if (globalData.isBackground) {
    // App处于后台时,iOS收到推送,从消息中心弹出推送,此时还未点击推送消息
    // 就自动触发了click事件,从而执行到这里 这个是框架的一个bug
    console.log(${source}推送,但app处于后台,为避免触发2次,忽略掉此次触发)
    return
    }
    const isAndroid = message.UUID && /^android/i.test(message.UUID)
    console.log(是否是安卓推送:${isAndroid})
    let payload = message.payload
    if (typeof payload === 'string') {
    payload = JSON.parse(decodeURIComponent(payload))
    }
    console.log(payload: ${payload})
    if (payload.local) {
    console.log(收到本地推送:${decodeURIComponent(JSON.stringify(message))},直接返回)
    return
    }
    if (handler) {
    handler(payload)
    }
    if (isAndroid) {
    // 如果是安卓的话 因为使用透传模板,推送消息不会出现在通知栏中,需要主动创建一个本地消息
    plus.push.createMessage(payload.content, JSON.stringify({
    local: true }))
    }
    }
    plus.push.addEventListener('click', function(message) {
    console.log('click message: ', message)
    _handlePush(message, 'click')
    })
    plus.push.addEventListener('receive', function(message) {
    console.log('receive message: ', message)
    _handlePush(message, 'receive')
    })
    // #endif
    }

//接收代码
plus.push.addEventListener('receive', message => {
console.log('接收到推送', message)
// 接收到消息
if (message.payload) {
try {
const payload = JSON.parse(message.payload)
if (payload && payload._local) return // 本地消息不做处理
} catch (e) {
console.log('推送payload解析对象失败', message.payload)
}
}
// 把消息保存到vuex中
this.updatePushMessage(message)
// ios平台接收到的在线消息(透传消息),要使用本地通知提醒
if (!message.aps && uni.getSystemInfoSync().platform === 'ios') {
console.log('ios平台接收到透传消息,使用本地通知提醒', message)
plus.push.createMessage(message.content, JSON.stringify({ _local: true }))
}
})

预期结果:

手机收到数字角标提示

实际结果:

没有收到数字角标,只能有小红点提示

bug描述:

我们用的unipush推送,现在推送消息华为手机收不到数字角标提示,只能收到小红点,手机设置已全部打开,小米手机可以有数字角标,苹果也可以,华为手机不行

2020-08-25 19:45 负责人:无 分享
已邀请:
8***@qq.com

8***@qq.com

老哥解决了吗?遇到同样的问题

该问题目前已经被锁定, 无法添加新回复