2013-03-19 1 views
7

Ich arbeite an einigen iOS-Apps, die alle unter demselben Publisher sind und bei denen alle Push-Benachrichtigungen aktiviert sind. Wenn ich registerForRemoteNotificationTypes anrufen, erhalte ich die Benutzeraufforderung Push-Benachrichtigungen zu erlauben oder zu verbieten, aber ich application:didRegisterForRemoteNotificationsWithDeviceToken: wird mit Token-Daten vor der Benutzer wählt eine Option gewählt. Und es wird erneut aufgerufen, wenn sie OK drücken. Ist das normal?APNS didRegisterForRemoteNotifications aufgerufen, bevor der Benutzer Benachrichtigungen auf iOS zulässt

Beachten Sie auch: mehrere Anwendungen scheinen das gleiche Token zu erhalten, wenn sie auf demselben Gerät ausgeführt werden.

+0

Ich bin mir nicht sicher über Ihre Hauptfrage, aber wie für die Notiz - es ist normal. Alle Anwendungen auf demselben Gerät erhalten dasselbe Geräte-Token. – Eran

+0

Möglicherweise haben Sie diese App bereits früher zum Empfangen von Push-Benachrichtigungen zugelassen. Durchsuchen Sie Ihre App in den Einstellungen-> Benachrichtigungen, um zu prüfen, ob sie bereits vorhanden ist. – msk

+0

@MSK - Aber wenn ich es bereits erlaubt habe, dann sollte es die Systemaufforderung nicht präsentieren, die den Benutzer fragt, ob sie Push-Benachrichtigungen erlauben wollen. Liege ich da falsch? –

Antwort

6

Dies ist von Apple-Dokumenten.

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

UND

The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

Ich denke, was Sie beobachten normal ist. Es wird nicht erwähnt, dass application:didRegisterForRemoteNotificationsWithDeviceToken nur aufgerufen wird, wenn der Benutzer die Berechtigung erteilt. Ich denke, Sie können es optimieren, indem Sie Geräte-Token in NSUserDefaults zwischenspeichern und in dieser Methode prüfen, ob das neue Token nicht mit dem zwischengespeicherten Token übereinstimmt.

+0

Es scheint unlogisch für mich, ein Token zu bekommen, wenn Push-Benachrichtigungen auf Systemebene deaktiviert werden. Aber wenn ich in Einstellungen gehe und alle Push-Sachen für diese App deaktiviere, werde ich immer noch mit einem Token zurückgerufen. Ich denke, du hast recht. –

+0

Was ist Benutzer aktivieren Push-Benachrichtigungen, wenn Ihre App im Hintergrund ist. Wenn Sie es starten, haben Sie kein Token auf Ihrem Server und iOS ruft didFinishLaunchingWithOptions nicht auf, wenn Sie es im Hintergrund starten. – msk

2

Es ist eine alte Frage, aber ich habe gerade dieses Problem festgestellt und es scheint mit Remote-Benachrichtigung Hintergrundmodus verbunden sein. application:didRegisterForRemoteNotificationsWithDeviceToken wird auf meinem iPhone vor dem Akzeptieren der Push-Benachrichtigungsberechtigung nur dann aufgerufen, wenn dieser Hintergrundmodus aktiviert ist.