Technischer Hinweis TN2265: Fehlerbehebung bei Push-Benachrichtigungen
Wenn sich eine Push-fähige App zum ersten Mal für Push-Benachrichtigungen registriert, fragt iOS den Benutzer, ob er Benachrichtigungen für diese App erhalten möchte. Sobald der Benutzer auf diese Warnung reagiert hat, wird sie erst wieder angezeigt, wenn das Gerät wiederhergestellt oder die App mindestens einen Tag lang deinstalliert wurde.
Wenn Sie eine erstmalige Ausführung Ihrer App simulieren möchten, können Sie die App einen Tag lang deinstallieren lassen. Letzteres können Sie erreichen, ohne einen Tag zu warten, indem Sie die Systemuhr einen Tag oder länger vorwärts stellen, das Gerät vollständig ausschalten und dann wieder einschalten.
Update: Wie in den Kommentaren unten erwähnt, funktioniert diese Lösung seit iOS 5.1 nicht mehr. Ich würde empfehlen, einen Fehler bei Apple einzureichen, damit diese ihre Dokumentation aktualisieren können. Die aktuelle Lösung scheint darin zu bestehen, den Inhalt und die Einstellungen des Geräts zurückzusetzen.
Update: Der technische Hinweis wurde mit neuen Schritten aktualisiert, die ab iOS 7 ordnungsgemäß funktionieren.
- Löschen Sie Ihre App vom Gerät.
- Schalten Sie das Gerät vollständig aus und wieder ein.
- Gehen Sie zu Einstellungen> Allgemein> Datum und Uhrzeit und legen Sie das Datum einen Tag oder länger vor.
- Schalten Sie das Gerät wieder vollständig aus und wieder ein.
UPDATE ab iOS 9
Durch einfaches Löschen und erneutes Installieren der App wird der Benachrichtigungsstatus auf zurückgesetzt notDetermined
(dh es werden Eingabeaufforderungen angezeigt).
Dank der Antwort von Gomfucius unten:
https://stackoverflow.com/a/33247900/704803
Eine andere Lösung zum Testen besteht darin, einfach Ihre Bundle-ID zu ändern. Vergiss nur nicht, es wieder zu ändern, wenn du fertig bist!
quelle
Unter iOS 9.0.2 wird jedes Mal, wenn ich die App lösche und neu installiere, die Meldung "Push-Benachrichtigung registrieren" angezeigt. Dies gilt sowohl für AppStore-Produktionsdownloads als auch für den Ad-hoc-Modus.
UPDATE: Es wurde bestätigt, dass dies für iOS 9.x funktioniert
quelle
Wie bereits erwähnt, wurde der Ansatz zum Zurücksetzen des Benachrichtigungsstatus für eine App auf einem Gerät für iOS5 und eine neuere Version geändert.
Dies funktioniert für mich unter iOS6:
Dadurch wird jedoch nur die erste Eingabeaufforderung erneut angezeigt. Es werden keine anderen Push-Status-bezogenen Elemente entfernt.
quelle
Die Liste: /private/var/mobile/Library/RemoteNotification/Clients.plist
... enthält die registrierten Clients für Push-Benachrichtigungen. Wenn Sie den Eintrag Ihrer App entfernen, wird die Eingabeaufforderung erneut angezeigt
quelle
Programmatisch zu arbeiten scheint für mich jedes Mal zu funktionieren. Ich habe einen Build mit der folgenden Zeile unkommentiert:
Ich führe es jedes Mal aus, wenn ich mich von PN abmelden möchte. Möglicherweise müssen Sie die App explizit aus der Liste der letzten Nachrichten beenden und mit dem Benachrichtigungscenter in der App "Einstellungen" herumspielen, um sie richtig zu machen.
Außerdem wird die UI-Eingabeaufforderung, die den Benutzer auffordert, sich für PN zu registrieren, möglicherweise nicht angezeigt. Nicht sicher, ob in einer der letzten iOS-Versionen deaktiviert wurde.
quelle
Wie Ianolito sagte, sollte das Einstellen des Datums funktionieren:
Ich habe festgestellt, dass auf meinem Gerät (iPhone 4, iOS 6.1.2) die Systemuhr einen Tag vorwärts eingestellt wurde oder sogar einige Tage bei mir nicht funktionierten . Also habe ich das Datum einen Monat vorverlegt und dann hat es funktioniert und meine Anwendung hat die Benachrichtigungsaufforderung erneut angezeigt.
Hoffe, das hilft jedem, es kann Kopfschmerzen verursachen!
quelle
Ich bin mit micmdk einverstanden. Ich hatte eine Entwicklungsumgebung mit Push-Benachrichtigungen eingerichtet und brauchte eine Möglichkeit, mein Telefon so zurückzusetzen, dass es wie eine Erstinstallation aussieht. Nur diese genauen Schritte haben bei mir funktioniert. ZWEI Neustarts des Geräts sind erforderlich:
Von APPLE TECH DOC:
Zurücksetzen des Push-Benachrichtigungs-Berechtigungsalarms unter iOS Wenn sich eine Push-fähige App zum ersten Mal für Push-Benachrichtigungen registriert, fragt iOS den Benutzer, ob er Benachrichtigungen für diese App erhalten möchte. Sobald der Benutzer auf diese Warnung reagiert hat, wird sie erst wieder angezeigt, wenn das Gerät wiederhergestellt oder die App mindestens einen Tag lang deinstalliert wurde.
Wenn Sie eine erstmalige Ausführung Ihrer App simulieren möchten, können Sie die App einen Tag lang deinstallieren lassen. Sie können Letzteres erreichen, ohne einen Tag zu warten, indem Sie die folgenden Schritte ausführen:
Löschen Sie Ihre App vom Gerät.
Schalten Sie das Gerät vollständig aus und wieder ein.
Gehen Sie zu Einstellungen> Allgemein> Datum und Uhrzeit und legen Sie das Datum einen Tag oder länger vor.
Schalten Sie das Gerät wieder vollständig aus und wieder ein.
quelle
Ich habe mich in der Vergangenheit darüber gewundert und bin zu dem Schluss gekommen, dass es sich tatsächlich nicht um einen gültigen Testfall für meinen Code handelt. Ich glaube nicht, dass Ihr Anwendungscode tatsächlich den Unterschied zwischen jemandem erkennen kann, der Benachrichtigungen beim ersten Mal ablehnt oder später in den iPhone-Benachrichtigungseinstellungen deaktiviert. Es ist wahr, dass die Benutzererfahrung anders ist, aber dies ist im Aufruf von registerForRemoteNotificationTypes verborgen.
Durch Aufrufen von unregisterForRemoteNotifications wird die Anwendung nicht vollständig aus den Benachrichtigungseinstellungen entfernt, obwohl der Inhalt der Einstellungen für diese Anwendung entfernt wird. Dies führt also immer noch nicht dazu, dass der Dialog dem Benutzer beim nächsten Ausführen der App ein zweites Mal angezeigt wird (zumindest nicht in Version 3.1.3, mit der ich gerade teste). Aber wie ich oben sage, sollten Sie sich darüber wahrscheinlich keine Sorgen machen.
quelle
Der gleiche technische Hinweis wie in der akzeptierten Antwort ( TN2265 - Fehlerbehebung bei Push-Benachrichtigungen) wurde seitdem mit einer Lösung für iOS 5 und höher aktualisiert.
Kurz gesagt: Erstellen Sie jedes Mal ein Backup und stellen Sie es wieder her.
quelle
Im Apple Tech Note wurde auch beschrieben, dass Sie das Gerät wiederherstellen können, um das Dialogfeld "Push-Benachrichtigung" zurückzusetzen.
Es heißt nicht, dass Sie auch die Option "Allgemein -> Zurücksetzen -> Alle Inhalte und Einstellungen löschen" auf dem Gerät selbst verwenden können (iOS 5.x).
quelle
Neben der Antwort von ianolito.
Hatte das gleiche Problem mit einer App, die ich vor einem Jahr heruntergeladen hatte und die Push-Benachrichtigung zunächst ablehnte. Da ich nun Push-Benachrichtigungen zurück haben wollte, funktionierten diese Schritte für mich unter iOS 7 Beta. Nicht sicher, welche Punkte es genau ausgelöst haben.
Gott sei Dank musste ich nicht "Alle Inhalte und Einstellungen löschen". Vielleicht hilft es jemandem.
quelle
Ich bin kürzlich auf ein ähnliches Problem mit reaktionsnativen Anwendungen gestoßen. Die iPhone OS-Version war 13.1. Ich habe die Anwendung deinstalliert und versucht, die App zu installieren. Dabei wurde festgestellt, dass sowohl Standort- als auch Benachrichtigungsberechtigungen nicht angefordert wurden.
Beim Überprüfen der Einstellungen konnte ich feststellen, dass meine Anwendung für den Speicherort aktiviert war (aus der vorherigen Installation). Es gab jedoch keinen entsprechenden Eintrag für die Benachrichtigung. Es wurde versucht, die Datei zu deinstallieren und neu zu starten, ohne die Zeit festzulegen. Es funktionierte nicht. Übrigens habe ich auch versucht, die Appstore-App herunterzuladen, immer noch das gleiche Verhalten.
Das Problem wurde erst nach dem Einstellen der Gerätezeit behoben.
quelle
Nach stundenlangem Suchen und ohne Glück mit den obigen Vorschlägen funktionierte dies wie ein Zauber für 3.x +
quelle