我正在创建一个iPhone应用,并希望在应用中的某个位置询问用户推送通知,这是他打开电源的时间。
流程是这样的:启动应用程序 - >玩游戏 - >结束游戏 - >自定义弹出窗口出现一个开关并询问您是否要打开推送通知? - >如果是,则调用registerForRemoteNotifications
(iOS 8) - >如果没有用户可以进入设置(在我的应用程序内)并打开一个应该再次询问他的开关。
问题是,当用户进入设置(在我的应用内)打开它时,我不知道是否调用了registerForRemoteNotifications
。
如果我检查isRegisteredForRemoteNotifications
,它会在调用第一个registerForRemoteNotifications
之前返回no,因此这不是一个选项。
我可以先调用registerForRemoteNotifications
,但如果用户从通知中心停用了应用,则不会调用回调,因此我无法显示弹出窗口,说明您已停用通知。
所以基本上我想要的是Apple推出的弹出通知在我的应用程序中的特定点,并允许用户手动打开,关闭我的应用程序内的通知。此外,当我显示设置屏幕时,我想知道用户是否从应用程序外部禁用了通知,因此他看到通知已被禁用。
有没有办法实现这个目标?我是否必须在NSUserDefaults中保存局部变量才能知道是否调用了registerForRemoteNotifications
?
答案 0 :(得分:2)
您可以使用[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
}