Etwas ähnlich zu When is didRegisterForRemoteNotificationsWithDeviceToken called?.didRegisterForRemoteNotificationsWithDeviceToken zweimal aufgerufen?
Wenn der Benutzer zuerst installiert die App und es fragt, ob eine Benachrichtigung akzeptiert wird, wird didRegisterForRemoteNotificationsWithDeviceToken
aufgerufen werden, wenn der Benutzer es annimmt?
Ich rufe derzeit registerForRemoteNotificationTypes
an, nachdem der Benutzer sich erfolgreich angemeldet oder ein Konto erstellt hat.
Bei nachfolgenden Starts wird der Delegat didRegisterForRemoteNotificationsWithDeviceToken
auch ohne Aufruf von registerForRemoteNotificationTypes
in AppDelegate aufgerufen.
Wenn ich die Dokumentation und Beispielcode folgen:
Durch das Gerät Token anfordern und dann an den Provider vorbei, jedes Mal Ihrer Anwendung startet, helfen Sie sicherstellen, dass der Anbieter die aktuellen Token für das Gerät hat .
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// other setup tasks here....
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:...
}
Aber durch das Token anfordert, wenn die App startet, werden die Delegierten zweimal aufgerufen werden.
Ein paar Fragen und Klarheit benötigt:
Für die erste Aufforderung geschehen, ein Anruf für
registerForRemoteNotificationTypes
muss gemacht werden, die Eingabeaufforderung angezeigt werden? Aber der Delegat wird zweimal aufgerufen, wenn ich dies manuell in AppDelegate aufrufe. Soll es so sein?Wenn der Benutzer die erste Eingabeaufforderung akzeptiert, wird
didRegisterForRemoteNotificationsWithDeviceToken
automatisch aufgerufen? Oder müssen wirregisterForRemoteNotificationTypes
in AppDelegate aufrufen? Aber dann wird der Delegierte zweimal für zukünftige Starts gerufen?Wenn der Benutzer dies verweigert und später über Setting akzeptiert, was passiert dann?
UPDATE
0. Für die erste Aufforderung geschehen, ein Anruf für registerForRemoteNotificationTypes
muss gemacht werden, die Eingabeaufforderung angezeigt werden? Aber der Delegat wird zweimal aufgerufen, wenn ich dies manuell in AppDelegate aufrufe. Soll es so sein?Das ist nicht wahr. Herausgefunden, dass es tatsächlich 2 registerForRemoteNotiicationTypes
in AppDelegate gemacht wurde.
Ok. Es wird nur aufgerufen, wenn der Benutzer die Aufforderung und eine erfolgreiche Registrierung akzeptiert? Andernfalls wird die Fehlermethode aufgerufen? Was passiert, wenn der Benutzer die Aufforderung ablehnt, wird die Fehlermethode aufgerufen? –
Wenn der Benutzer die Eingabe ablehnt, hat er den APNS-Registrierungsprozess nicht initiiert und die Fehlermethode wird nie aufgerufen. Die Methode didFailToRegisterForRemoteNotificationsWithError wird nur bei einem Registrierungsfehler aufgerufen. – thatzprem