2010-08-27 107 views
7

试图解决一些角落情况下,当推送通知的应用程序被拒绝,我有两个问题:推送通知权限

1)有没有一种方法重置用户是否已经看到了通知请求弹出向上?

2)有什么方法可以确定用户是否对通知请求表示“否”?

回答

5

1)没有,除非有一些私人的API,这样做,但是这不是苹果

2)第一次您的应用程序被启动,允许呼叫registerForRemoteNotificationTypes后,您可以检查是否didRegisterForRemoteNotificationsWithDeviceToken叫做。如果不是,用户说“不,谢谢”。

+0

1)我的想法。 ..发牢骚 2)唯一的问题是registerForRemoteNotificationTypes和didRegisterForRemoteNotificationsWithDeviceToken之间的时间跨度是未定义的。我可以在应用程序退出时检查它,但我不确定用户是否必须在退出之前做出选择。 另外,用户可以在“设置”中更改通知权限,但无法检测到该更改。 – 2010-08-27 18:57:22

5

您可以随时检查,如果用户更改他们的权限的状态,你可以检查他们applicationDidBecomeActive

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) { 
     if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]){ 
      NSLog(@"Notifications Enabled ios 8"); 
     } else { 
      NSLog(@"Notifications not Enabled ios 8"); 
     } 
    } else { 
     UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
     if (types & UIRemoteNotificationTypeAlert) 
     { 
      NSLog(@"Notifications Enabled"); 
     } 
     else 
     { 
      NSLog(@"Notifications not Enabled"); 
     } 
    } 

} 

更新,以使其在iOS 8工作太

+0

从文档看来,如果您要求获得警报权限,即使用户已禁用了应用警报,也会设置该设置。 – 2014-09-12 00:23:19

+0

我不明白你的意思,这不设置任何东西,只是检查权限状态 – jcesarmobile 2014-09-12 05:47:44

+0

我想这只是报告你以前要求注册的权限,但在进一步的测试中,我认为你是对的,它只报告系统授予的权限。 – 2014-09-12 06:05:21