macOS下Swift调用UserNotifications申请本地通知权限失败如何解决
执行TCC权限重置命令
macOS的权限配置统一存储在TCC数据库中,可通过命令行重置指定应用的通知权限:
打开终端执行以下命令,替换你的应用Bundle ID为你项目的Bundle Identifier:sudo tccutil reset com.apple.notificationcenter 你的应用Bundle ID
如果你需要重置所有应用的通知权限,可以执行:sudo tccutil reset com.apple.notificationcenter
输入密码确认后即可完成权限重置。检查Info.plist配置
未在Info.plist中添加通知权限使用说明的情况下,系统会直接默认拒绝授权申请,不会弹出授权弹窗。需要在Info.plist中添加以下键值对:
键:NSUserNotificationUsageDescription
值:填写你使用通知的实际用途,例如「接收任务提醒」检查项目能力配置
打开Xcode项目的Signing & Capabilities标签页,确认已经添加User Notifications能力,未添加该能力的应用会被系统拦截通知权限申请。验证修复效果
完成上述配置后,先彻底退出已安装的应用,执行Xcode的Clean操作(快捷键Command + Shift + K)后重新编译运行应用,此时会正常弹出通知权限申请弹窗,授权后即可正常使用通知功能。
如果上述操作后仍存在问题,可以尝试用其他macOS用户账户运行测试,排除当前用户的系统权限数据库异常的问题。
内容的提问来源于stack exchange,提问作者Vicente Garcia

