uni-app plus.runtime.setBadgeNumber 不生效

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

uni-app plus.runtime.setBadgeNumber 不生效

信息项 内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 Windows 10 专业版
HBuilderX类型 正式
HBuilderX版本 3.8.4
手机系统 全部
手机系统版本 Android 12
手机机型 Redmi Note12
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

测试过的手机:

  • 荣耀 20
  • oppo
  • 红米 MIUI 1313.0.16

操作步骤:

  • app.vue onHide 执行 plus.runtime.setBadgeNumber 代码

预期结果:

  • 在手机桌面能够看到角标

实际结果:

  • 手机桌面能够看不到角标, 也没有报错行为

bug描述:

  • plus.runtime.setBadgeNumber 不生效
  • plus.push.getClientInfoAsync 获取不到信息

附件中那边推送测试消息能够收到 并且能够出现桌面角标

Image


1 回复

在uni-app中,plus.runtime.setBadgeNumber 用于设置应用图标上的角标数字,通常用于iOS平台来表示未读消息的数量。如果你发现 plus.runtime.setBadgeNumber 不生效,可能是由以下几个原因导致的:

  1. 权限问题:确保你的应用有权限设置角标。在iOS中,这通常需要在 manifest.json 中声明必要的权限。

  2. 系统限制:iOS系统可能对某些类型的应用或特定情况下禁止设置角标。

  3. 代码问题:检查你的代码是否正确调用并传入了正确的参数。

  4. 应用状态:如果应用在后台被挂起或被杀掉,可能无法及时更新角标。

  5. 版本兼容性问题:确保你的uni-app和HBuilderX版本支持该功能。

以下是一个基本的代码示例,用于在uni-app中设置应用角标数字:

// 确保在App端执行
if (window.plus) {
    // 尝试设置角标数字为5
    plus.runtime.setBadgeNumber(5, function() {
        console.log('角标设置成功');
    }, function(e) {
        console.error('设置角标失败: ' + JSON.stringify(e));
    });
} else {
    console.warn('当前环境不支持plus API');
}

// 监听应用进入前台事件,以便在必要时重新设置角标
plus.runtime.onAppShow = function() {
    // 可以再次尝试设置角标,以防系统清理了之前的设置
    plus.runtime.setBadgeNumber(5, function() {
        console.log('应用进入前台,角标设置成功');
    }, function(e) {
        console.error('应用进入前台,设置角标失败: ' + JSON.stringify(e));
    });
};

// 监听应用进入后台事件
plus.runtime.onAppHide = function() {
    console.log('应用进入后台');
};

注意事项

  • 确保你的应用已经在iOS设备上真机运行,因为模拟器可能不支持角标显示。
  • 在iOS上,如果应用被用户强制退出(从任务管理器中滑动删除),则所有后台任务(包括角标更新)都将被终止。
  • 如果你的应用是通过App Store发布的,确保遵循苹果的开发者指南,避免滥用角标功能。

如果上述代码仍然无法解决问题,建议检查iOS设备的系统设置,确保应用没有被禁止显示角标,或者尝试在不同的iOS版本和设备上测试。此外,也可以查看HBuilderX和uni-app的官方文档或社区,看是否有其他开发者遇到并解决了类似的问题。

回到顶部