在React Native应用中如何设置iOS主屏幕的应用角标数字?
你提到的PushNotificationIOS.setApplicationIconBadgeNumber(number)方法完全可以实现iOS主屏幕应用图标角标的设置需求,具体实现和代码放置位置如下:
1 前置配置
- 首先确认你已经正确安装了对应的推送iOS依赖库,且完成了原生端的配置
- 必须先向用户申请角标权限,iOS只有用户同意通知相关权限后,角标设置才会生效,权限申请代码建议放在App根组件的初始化生命周期中(比如函数组件的
useEffect(() => {}, [])或者类组件的componentDidMount)
示例代码:
import PushNotificationIOS from '@react-native-community/push-notification-ios'; // App初始化时执行 PushNotificationIOS.requestPermissions({ badge: true, // 仅需要角标权限可只开启该选项 alert: false, sound: false }).then(res => { console.log('角标权限申请结果:', res.badge) })
2 代码放置位置
根据你的使用场景选择放置位置即可:
- 和Tab栏角标同步:直接把角标设置逻辑和你现在更新
tabBarBadge的逻辑放在一起,每次更新Tab角标的时候同步调用方法更新主屏幕角标即可,保证两边数值一致
示例代码:
// 你原有更新Tab角标的方法 const updateMessageBadge = (newCount) => { // 原有更新Tab栏角标的逻辑 setTabBarBadge(newCount) // 新增:同步设置主屏幕角标 PushNotificationIOS.setApplicationIconBadgeNumber(newCount) }
- App启动恢复角标:如果需要每次App启动时恢复上次的角标数值,可以把设置逻辑放在权限申请成功的回调里,读取本地存储的角标数值后调用方法设置
- 后台推送更新角标:如果是收到推送时更新角标,直接把方法放在推送事件的回调逻辑中即可
- 调用
PushNotificationIOS.setApplicationIconBadgeNumber(0)即可清除角标
注意事项
- 如果用户拒绝了角标权限,调用该方法不会生效,你可以通过
PushNotificationIOS.checkPermissions()方法先判断权限状态,再做对应处理 - 该方法仅对iOS生效,Android系统的桌面角标需要单独适配不同厂商的ROM
内容的提问来源于stack exchange,提问作者AJDee
相关产品推荐
相关产品推荐

