gpt4 book ai didi

ios - `isRegisteredForRemoteNotifications` 第一次查询时返回 false

转载 作者:行者123 更新时间:2023-11-28 21:40:23 25 4
gpt4 key购买 nike

我正在创建一个 iPhone 应用程序,并希望在应用程序中的某个时间点询问用户推送通知,也就是当他打开开关时。

流程是这样的:启动应用程序->玩游戏->结束游戏->出现带有开关的自定义弹出窗口,询问您是否要打开推送通知?-> 如果是,则 registerForRemoteNotifications 被称为 (iOS 8) -> 如果没有,用户可以进入设置(在我的应用程序内)并打开一个应该再次询问他的开关。

问题是,当用户转到设置(在我的应用程序内)将其打开时,我不知道是否调用了 registerForRemoteNotifications。如果我检查 isRegisteredForRemoteNotifications,它总是在调用第一个 registerForRemoteNotifications 之前返回 no,所以这不是一个选项。

我可以先调用 registerForRemoteNotifications,但如果用户从通知中心禁用了该应用程序,则不会调用回调,因此我无法显示一个弹出窗口,说明您禁用了通知。

所以基本上我想要的是来自 Apple 的推送通知弹出窗口位于我的应用程序内的某个点,并且还允许用户手动打开、关闭我的应用程序内的通知。此外,当我显示设置屏幕时,我想知道用户是否禁用了来自应用程序外部的通知,以便他看到通知被禁用。

有什么办法可以实现吗?我是否必须在 NSUserDefaults 中保存局部变量才能知道是否调用了 registerForRemoteNotifications

最佳答案

您可以使用 [UIApplication registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings] 显示 Apple 的推送通知权限弹出窗口。

如果你想检查你的应用设置的通知状态,你可以使用这个:

UIUserNotificationType currentType = [UIApplication currentUserNotificationSettings].types;
UIUserNotificationType required = UIUserNotificationTypeBadge | UIUserNotificationTypeAlert;

if (currentType == UIUserNotificationTypeNone) {
//show enable message
} else if (!(currentType & required)){
//show enable UIUserNotificationTypeBadge or
//UIUserNotificationTypeAlert message
}

关于ios - `isRegisteredForRemoteNotifications` 第一次查询时返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com