2012-10-09 8 views
5

Eines der Features in meiner App ist die Registrierung des Benutzers von der Remote-Push-Notifikation, wenn sich der Benutzer von der App abmeldet. Kann ich die App von der Push-Benachrichtigung abmelden, wenn sich der Benutzer abmeldet, während sich das Gerät im Flugzeugmodus (offline) befindet?IOS unregisterForRemoteNotifications funktioniert nicht im Flugzeugmodus

Ich habe diesen Code versucht, aber ich erhalte immer noch Benachrichtigungen, wenn ich wieder online bin, [[UIApplication sharedApplication] unregisterForRemoteNotifications];

Kann Ihnen jemand helfen, die App aus dem Benachrichtigungscenter zu entfernen, wenn sich das Gerät im Flugzeugmodus befindet?

+1

Sie müssen nicht mit dem Internet verbunden sein, um die Registrierung aufzuheben? – DGund

+0

@DGund Ich war unter dem gleichen Missverständnis, aber in Wirklichkeit müssen Sie online sein, um die Registrierung erfolgreich abzubrechen. Sie erhalten weiterhin Benachrichtigungen, wenn Sie nicht registriert sind, während Sie keine Verbindung haben. – user1732255

Antwort

0

Hinzufügen einer Markierung oder etwas ähnliches (nennen wir es, was Sie wollen, wie ShouldRecallUnregister), wenn Sie anrufen

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

, dass Sie auf YES gesetzt, wenn es keine Internet-Verbindung ist, und lassen Sie es bei NEIN wenn die Abmeldung funktioniert.

Bewahren Sie es in dem UserDefaults ([[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShouldRecallUnregister"];), und prüfen Sie seinen Wert in applicationDidBecomeActive: zum Beispiel (oder wo auch immer sie paßt am besten zu Ihrer app).

Wenn es JA ist, rufen Sie erneut [[UIApplication sharedApplication] unregisterForRemoteNotifications];.

+0

So erhalten Sie weitere Benachrichtigungen im Zeitraum von Airplanemode-Abschaltung und Anwendungsaktivierung. – ilmiacs

+0

Danke für die Lösung. unregisterForRemoteNotifications hat keinen Ereignisrückruf, um zu verfolgen, ob die Aufhebung der Registrierung erfolgreich war oder nicht? Gibt es eine Möglichkeit, es zu verfolgen? – user1732255

+0

@drdurand diese Lösung möglicherweise nicht meine Anforderung, wie ich keine Benachrichtigungen erhalten sollte, sobald Benutzer aus der App ausgeloggt hat.Bei dieser Lösung wird die Registrierung nur dann aufgehoben, wenn der Nutzer die App neu startet oder die App in den Vordergrund versetzt. Bis dahin erhalten wir noch Benachrichtigungen. Gibt es besseres Wetter? – user1732255

2

Apple steuert Remote-Push-Benachrichtigungen. Wenn Sie offline sind, können Sie sie logischerweise nicht deaktivieren. Wenn Apple Sie zum ersten Mal online sieht und Push-Nachrichten nicht deaktiviert sind, werden Push-Nachrichten gesendet. Es gibt keine Möglichkeit, zu verhindern, dass das iDevice die Pushs anzeigt, die Apple an den Benutzer sendet, da es nicht in den Händen der App liegt.

Es gibt also nur eine Möglichkeit: Sie müssen die Pushs SOFORT deaktivieren, nachdem das Gerät wieder online gegangen ist. Und dennoch ist es eine Frage des Glücks, welche Nachricht Apple zuerst erhält, dass Sie online sind oder dass Sie Push deaktivieren. Und es stellt sich auch die Frage, was mit den Benachrichtigungen passiert, die Apple an das Gerät senden wollte, während es offline war. Wird es sie im Online-Modus erneut senden oder bei der Deaktivierung zuerst verwerfen? Ich weiß es nicht. Sie müssen die Nachforschungen anstellen.

Die einzige Chance, die Sie haben, ist, wenn Ihre App im Hintergrund ist, während der Benutzer online geht. Sie müssen verhindern, dass Ihre App gesperrt wird (here's, um dies zu erreichen), um auf Systembenachrichtigungen reagieren zu können. Die Benachrichtigung, die Sie benötigen, ist die der Änderung des Online-Status, ich weiß nur, dass es existiert. This resource kann hilfreich sein. Wenn das Gerät online geht, benachrichtigt es Ihre App, die im Hintergrund wartet (nicht gesperrt). Dann können Sie sofort reagieren, indem Sie die Fernbedienung von Fernbedienungen abmelden.

Das ist das Beste, was Sie in dieser Richtung erreichen könnten. Hoffe das hilft.

+0

Upvote, Ihre Lösung scheint echt. – rdurand

Verwandte Themen