2016-03-31 3 views
0

das ist meine Frage:Erkennung von Push Notification mit UIBackgroundModes in Info.plist konfiguriert aktiviert

ich diesen Code implementiert für detektiert Benutzer aktiviert oder nicht Push-Benachrichtigung

if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]) { 
    NSLog(@"Yes, s(he) accepted Push Notification"); 
} else { 
    NSLog(@"No, s(he) rejected Push Notification"); 
} 

, die es sehr gut funktioniert. Aber ich hatte implementiert stille Push-Benachrichtigung im Hintergrund zu erhalten, so habe ich diesen Code in meinem Info.plist

<key>UIBackgroundModes</key> 
<array> 
    <string>remote-notification</string> 
</array> 

Dann, wenn ich diesen hinzugefügt, den Code, wenn Benutzer aktiviert erkannt oder nicht Push notification immer TRUE zurück, es Es spielt keine Rolle, ob der Benutzer Push Notification aktiviert hat oder nicht. Es gibt eine Möglichkeit, nur zu erkennen, ob der Benutzer die sichtbare Push-Benachrichtigung aktiviert hat (Warnungen oben auf dem Telefon) und die UIBackgroundModes zulassen.

+0

Mögliche Duplikat [auf dem iPhone fest, ob Benutzer Push-Benachrichtigungen aktiviert hat] (http://stackoverflow.com/questions/1535403/determine -on-iphone-if-user-hat-aktiviert-Push-Benachrichtigungen) – dan

+0

Es war nicht das gleiche, weil es im Allgemeinen verweist, aber in Kommentaren ist die Lösung ... danke @dan –

Antwort

0

Ist [[UIApplication sharedApplication] isRegisteredForRemoteNotifications] nicht korrekt zu verwenden. Um die Entscheidung des Benutzers kennen Push-Benachrichtigung mit currentUserNotificationSettings ist

UIUserNotificationSettings *notificationSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 

if (!notificationSettings || (notificationSettings.types == UIUserNotificationTypeNone)) { 
     isEnabled = NO; 
} else { 
     isEnabled = YES; 
} 
Verwandte Themen