Verzögerte Push-Benachrichtigungen und prüfen, ob der Benutzer sie aktiviert hat

8

Ich entwickle eine App, die sich um Push-Benachrichtigungen kümmert. Die App fordert Benachrichtigungsberechtigungen nur an, wenn der Benutzer einen bestimmten Punkt des Registrierungsprozesses erreicht. Ich habe bereits Folgendes geschafft:

  • Die App verwaltet eine NSUserDefaults -Variable, die angibt, ob es erforderlich ist, sich beim Start für Push zu registrieren oder nicht (standardmäßig: nicht)
  • Wenn die Registrierung diesen Punkt erreicht, kippe ich die Variable und rufe -registerForRemoteNotificationTypes: auf iOS 7 und -registerUserNotificationSettings: auf iOS 8
  • auf

Dies funktioniert, wenn der Benutzer Push-Benachrichtigungen nicht bereits aktiviert und später in den Einstellungen deaktiviert hat. In diesem Fall versuche ich Push beim Start zu registrieren, was weder -application:didRegisterForRemoteNotificationsWithDeviceToken noch -application:didFailToRegisterForRemoteNotificationsWithError aufruft.

Zusätzliche Informationen, dass das -isRegisteredForRemoteNotifications von iOS 8 auch YES zurückgibt. (Ich habe nicht getestet, aber angenommen, dass -enabledNotificationTypes bis iOS 7 funktioniert.)

Wie kann ich dieses Szenario erkennen und dem Benutzer einen Anforderer vorstellen, der ihn auffordert, Benachrichtigungen in den Einstellungen zu aktivieren?

    
gklka 29.07.2014, 14:08
quelle

1 Antwort

6
%Vor%
  

Gibt einen booleschen Wert zurück, der angibt, ob die App gerade registriert ist   für Remote-Benachrichtigungen.

     

Deklaration SWIFT func isRegisteredForRemoteNotifications () - & gt; Bool   ZIEL C   - (BOOL) isRegisteredForRemoteNotifications Rückgabewert YES, wenn die App für Remote-Benachrichtigungen registriert ist und ihr Geräte-Token empfangen hat   oder NEIN, wenn die Registrierung nicht erfolgt ist, fehlgeschlagen ist oder abgelehnt wurde   vom Benutzer.

     

Diskussion Diese Methode spiegelt nur den erfolgreichen Abschluss der   Fernregistrierungsprozess, der beginnt, wenn Sie den   registerForRemoteNotifications-Methode. Diese Methode spiegelt nicht wider   ob Push-Benachrichtigungen aufgrund der Konnektivität tatsächlich verfügbar sind   Probleme. Der von dieser Methode zurückgegebene Wert berücksichtigt den Wert   Benutzereinstellungen für den Empfang von Push-Benachrichtigungen.

     

Verfügbarkeit Verfügbar in iOS 8.0 und höher.

Link zu Apple Docs

Ich würde einen Fehlerbericht bei Apple einreichen.

    
Jasper 29.07.2014 14:43
quelle