2010-08-27 158 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