1

Ich möchte in meiner App so etwas wie disabler und Enabler von Push-Benachrichtigungen verwenden. Ich benutze Code wie diesen. Auch aktiviere ich Benachrichtigungen in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions mit Code von sender.isOnregisterusernotificationsettings funktioniert nicht nach der Verwendung von unregisterForRemoteNotifications

if (sender.isOn) { 

    self.notificationLabel.text = @"Notifications enabled"; 

    UIUserNotificationType allNotificationTypes = (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge); 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 

} else { 

    self.notificationLabel.text = @"Notifications disabled"; 

    [[UIApplication sharedApplication] unregisterForRemoteNotifications]; 

} 

Aber nach dem ersten Gebrauch unregisterForRemoteNotifications meine App nicht Paraphierung Benachrichtigungen mit registerForRemoteNotifications. Ich verstehe nicht, was ich falsch mache.

Antwort

2

Lösung: Deinstallieren Sie die App und löschen Sie diesen Code!

Es hat mich viele Stunden und 3 kaputte Testgeräte gebraucht, um diese zu verfolgen ..!

Diese Linie ist schlecht:

[[UIApplication sharedApplication] unregisterForRemoteNotifications] //DON'T DO IT! 

Es die App in einem instabilen Zustand versetzt, wo Aufruf registerForRemoteNotifications nicht mehr funktioniert.

Diese Linie ist ebenso böse:

[[UIApplication sharedApplication] registerForRemoteNotifications] //CALL ME ONCE! 

Sie es einmal anrufen müssen, und nur einmal, pro Lauf Ihrer Anwendung. Wenn Sie es zweimal aufrufen, werden Benachrichtigungen auf mysteriöse Weise unterbrochen.