首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第一次查询时,`isRegisteredForRemoteNotifications`返回false

问第一次查询时,`isRegisteredForRemoteNotifications`返回false
EN

Stack Overflow用户
提问于 2015-09-03 21:44:22
回答 1查看 611关注 0票数 0

我正在创建一个iPhone应用程序,我想在应用程序中的某个点向用户请求推送通知,也就是他打开开关的时候。

流程是这样的:开始应用程序->玩游戏->结束游戏->自定义弹出窗口出现,并询问您是否要打开推送通知?->如果是,则调用registerForRemoteNotifications (iOS 8) ->如果否,用户可以转到设置(在我的应用程序内)并打开开关,这将再次询问他。

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

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

因此,基本上我想要的是,从苹果弹出的推送通知在我的应用程序内的某个点,也允许用户手动打开,关闭我的应用程序内的通知。另外,我想当我显示设置屏幕时,要知道用户是否禁用了来自应用程序外部的通知,以便他看到通知被禁用。

有什么方法可以做到这一点吗?是否必须将局部变量保存在NSUserDefaults中才能知道是否调用了registerForRemoteNotifications?

EN

回答 1

Stack Overflow用户

发布于 2015-09-03 22:24:25

您可以使用[UIApplication registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings]展示苹果的推送权限弹窗。

如果你想检查你的应用程序设置的通知状态,你可以使用以下命令:

代码语言:javascript
复制
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
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32377400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档