iOS 17中applicationIconBadgeNumber已废弃,如何实现应用角标减1?
iOS 17 实现应用角标数字递减1的方案
在iOS 17中,UIApplication.shared.applicationIconBadgeNumber已被废弃,需要改用UNUserNotificationCenter的相关API来管理应用角标。要实现点击按钮时角标数字减1(而非直接重置为0),可以按以下步骤操作:
核心思路
先获取当前的角标数值,计算出递减1后的结果(需保证结果不小于0),再调用新API设置新的角标数。
代码实现
let center = UNUserNotificationCenter.current() do { // 获取当前应用角标数 let currentCount = try await center.getBadgeCount() // 计算新角标数,避免出现负数 let newCount = max(currentCount - 1, 0) // 更新角标 try await center.setBadgeCount(newCount) } catch { print("更新角标失败:\(error.localizedDescription)") }
关键点说明
getBadgeCount()是iOS 17新增的方法,用于获取当前应用的角标数值,替代了旧的applicationIconBadgeNumber属性- 用
max(currentCount - 1, 0)确保角标数不会变为负数,避免出现异常情况
内容的提问来源于stack exchange,提问作者Alexander Johansson
相关产品推荐
相关产品推荐

