uni-app IOS 调用 plus.runtime.setBadgeNumber(0) 方法无效

uni-app IOS 调用 plus.runtime.setBadgeNumber(0) 方法无效

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 x64
HBuilderX类型 正式
HBuilderX版本号 3.7.9
手机系统 iOS
手机系统版本号 iOS 16
手机厂商 苹果
手机机型 14Pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

在app.vue 页面 onShow方法下调用plus.runtime.setBadgeNumber(0),给应用发送2条通知消息 app应用角标显示2,点击启动app查看通知消息此时执行了 plus.runtime.setBadgeNumber(0)代码 在应用后台 在次给应用发送3条通知消息 应用角标显示为5

预期结果:

在次给应用发送3条通知消息 应用角标应该显示为3

实际结果:

实际在次给应用发送3条通知消息 应用角标显示是5

bug描述:

IOS 开启了Push Notifications服务 启动app的时候调用plus.runtime.setBadgeNumber(0)方法清除角标无效 Android 有效果


更多关于uni-app IOS 调用 plus.runtime.setBadgeNumber(0) 方法无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

在onShow方法中调用不生效的原因还需要排查确认下,临时可以尝试在onShow中通过setTimeout延迟调用plus.runtime.setBadgeNumber(0)

更多关于uni-app IOS 调用 plus.runtime.setBadgeNumber(0) 方法无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


使用setTimeout 延迟 亲测无效 HBX版本3.7.9.20230324 测试手机 iPhone14Pro 系统16

使用setTimeout测试 示例代码 setTimeout(()=>{ plus.runtime.setBadgeNumber(0) },1000)

你好 我提交的bug 填写的项目详情中的 项目创建方式错了 项目创建方式应该是 cli cli的版本号是 5.0.8

测试未发现异常

我想问一下 要怎么提供测试代码给你们 你们才能复现解决问题? 我们本地项目目前就是这个问题的 Android没有问题 ios 有问题 楼上那位伙伴已经发现问题了 在你这里又没有问题了

回复 ztb: 上面回复你的意思是需要排查确认是否有问题,排查的人是我,未发现问题,看私信,加我好友,把能复现问题的工程发我,使用你们的环境测试一下

这个问题是iOS平台上常见的角标计数问题。以下是关键点分析:

  1. iOS系统特性:iOS的角标计数是系统级维护的,应用退出后系统仍会累计未读消息数

  2. 常见原因:

  • 调用setBadgeNumber(0)时机不对
  • 需要配合推送服务进行同步
  • iOS需要额外配置
  1. 解决方案:
// 在App.vue的onShow中这样处理
onShow() {
    // 先获取当前角标数
    plus.runtime.getBadgeNumber(num => {
        if(num > 0) {
            // 清除本地角标
            plus.runtime.setBadgeNumber(0)
            // 需要通知服务端已读(如果有服务端推送)
        }
    })
}
回到顶部