在 UniApp 中设置或更新应用角标(App Badge),通常指在移动设备(如 iOS 或 Android)的应用图标上显示未读消息数量。UniApp 本身不直接提供角标 API,但可以通过以下方法实现:
1. 使用 UniApp 的 uni.setTabBarBadge 方法(仅限 TabBar)
如果你的角标是显示在底部 TabBar 上,可以使用内置 API:
// 设置 TabBar 角标(例如在 index 页签显示数字 5)
uni.setTabBarBadge({
index: 0, // TabBar 页签索引(从 0 开始)
text: '5' // 角标文本,如果是数字会自动显示为红点,支持字符串如 "99+"
});
// 移除 TabBar 角标
uni.removeTabBarBadge({
index: 0
});
2. 使用原生插件(推荐用于应用图标角标)
对于应用图标角标,需依赖原生能力:
- iOS:通过
uni.postNotification 调用原生代码(需配置原生插件)。
- Android:依赖设备厂商支持,通常通过第三方推送服务(如个推、极光)设置。
示例步骤(以 uni-app 原生插件为例):
- 安装角标插件:在 HBuilderX 的插件市场搜索 “badge” 或 “角标”,安装对应插件(如 uni-badge)。
- 配置原生设置:
- iOS:在
manifest.json 中配置权限,并确保应用有通知权限。
- Android:部分设备需额外配置厂商通道。
- 代码示例:
// 引入插件(具体 API 以插件文档为准)
const badge = uni.requireNativePlugin('BadgeModule');
// 设置角标数量
badge.setBadge({
count: 10 // 角标数字
});
// 清除角标
badge.clearBadge();
3. 通过推送服务设置角标
如果应用集成了推送服务(如 UniPush),角标通常由服务端通过推送Payload自动更新:
// 示例:UniPush 接收消息时更新角标
uni.onPushMessage((res) => {
// 解析推送数据,提取角标数量
const badgeCount = res.data.badge;
// 调用原生角标方法更新
});
注意事项:
- 平台差异:iOS 角标支持较好,Android 因厂商定制需单独适配(部分设备可能不支持)。
- 权限要求:iOS 需用户授权通知权限;Android 依赖系统或厂商实现。
- 测试建议:在真机上测试,模拟器可能无法正常显示角标。
总结:
- 优先使用
uni.setTabBarBadge 管理 TabBar 角标。
- 应用图标角标推荐通过原生插件或推送服务实现。具体代码需根据所选插件的文档调整。