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
在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)
测试未发现异常
我想问一下 要怎么提供测试代码给你们 你们才能复现解决问题? 我们本地项目目前就是这个问题的 Android没有问题 ios 有问题 楼上那位伙伴已经发现问题了 在你这里又没有问题了
回复 ztb: 上面回复你的意思是需要排查确认是否有问题,排查的人是我,未发现问题,看私信,加我好友,把能复现问题的工程发我,使用你们的环境测试一下
这个问题是iOS平台上常见的角标计数问题。以下是关键点分析:
-
iOS系统特性:iOS的角标计数是系统级维护的,应用退出后系统仍会累计未读消息数
-
常见原因:
- 调用setBadgeNumber(0)时机不对
- 需要配合推送服务进行同步
- iOS需要额外配置
- 解决方案:
// 在App.vue的onShow中这样处理
onShow() {
// 先获取当前角标数
plus.runtime.getBadgeNumber(num => {
if(num > 0) {
// 清除本地角标
plus.runtime.setBadgeNumber(0)
// 需要通知服务端已读(如果有服务端推送)
}
})
}