我正在创建一个iPhone应用程序,我想在应用程序中的某个点向用户请求推送通知,也就是他打开开关的时候。
流程是这样的:开始应用程序->玩游戏->结束游戏->自定义弹出窗口出现,并询问您是否要打开推送通知?->如果是,则调用registerForRemoteNotifications (iOS 8) ->如果否,用户可以转到设置(在我的应用程序内)并打开开关,这将再次询问他。
问题是,当用户转到设置(在我的应用程序中)打开它时,我不知道是否调用了registerForRemoteNotifications。如果我检查isRegisteredForRemoteNotifications,它总是在调用第一个registerForRemoteNotifications之前返回no,所以这不是一个选项。
我可以先调用registerForRemoteNotifications,但如果用户从通知中心禁用了应用程序,则不会调用回调,因此我无法显示弹出窗口,说明您禁用了通知。
因此,基本上我想要的是,从苹果弹出的推送通知在我的应用程序内的某个点,也允许用户手动打开,关闭我的应用程序内的通知。另外,我想当我显示设置屏幕时,要知道用户是否禁用了来自应用程序外部的通知,以便他看到通知被禁用。
有什么方法可以做到这一点吗?是否必须将局部变量保存在NSUserDefaults中才能知道是否调用了registerForRemoteNotifications?
发布于 2015-09-03 22:24:25
您可以使用[UIApplication registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings]展示苹果的推送权限弹窗。
如果你想检查你的应用程序设置的通知状态,你可以使用以下命令:
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
}https://stackoverflow.com/questions/32377400
复制相似问题