Uwaga techniczna TN2265: Rozwiązywanie problemów z powiadomieniami push
Gdy aplikacja obsługująca funkcję push po raz pierwszy rejestruje się w celu otrzymywania powiadomień push, system iOS pyta użytkownika, czy chce otrzymywać powiadomienia dotyczące tej aplikacji. Gdy użytkownik odpowie na to ostrzeżenie, nie zostanie on ponownie wyświetlony, chyba że urządzenie zostanie przywrócone lub aplikacja zostanie odinstalowana przez co najmniej jeden dzień.
Jeśli chcesz zasymulować pierwsze uruchomienie aplikacji, możesz pozostawić ją odinstalowaną na jeden dzień. Możesz to osiągnąć bez czekania dnia, przestawiając zegar systemowy o jeden dzień lub więcej do przodu, całkowicie wyłączając urządzenie, a następnie włączając je ponownie.
Aktualizacja: Jak zauważono w komentarzach poniżej, to rozwiązanie przestało działać od iOS 5.1. Zachęcałbym do zgłoszenia błędu w Apple, aby mogli zaktualizować swoją dokumentację. Obecne rozwiązanie wydaje się resetować zawartość i ustawienia urządzenia.
Aktualizacja: notatka techniczna została zaktualizowana o nowe kroki, które działają poprawnie od iOS 7.
- Usuń aplikację z urządzenia.
- Całkowicie wyłącz urządzenie i włącz je ponownie.
- Wybierz kolejno opcje Ustawienia> Ogólne> Data i czas i ustaw datę z wyprzedzeniem co najmniej o jeden dzień.
- Całkowicie wyłącz urządzenie i włącz je ponownie.
AKTUALIZACJA od iOS 9
Po prostu usunięcie i ponowna instalacja aplikacji spowoduje zresetowanie stanu powiadomień do notDetermined
(co oznacza, że pojawią się monity).
Dzięki odpowiedzi Gomfuciusa poniżej:
https://stackoverflow.com/a/33247900/704803
Innym rozwiązaniem do testowania tego jest po prostu zmiana identyfikatora pakietu. Po prostu nie zapomnij go zmienić, gdy skończysz!
źródło
W systemie iOS 9.0.2 za każdym razem, gdy usuwam aplikację i instaluję ją ponownie, pojawia się „alert push register”. Dotyczy to zarówno pobierania produkcyjnego AppStore, jak i trybu adhoc.
AKTUALIZACJA: Potwierdzono, że to działa na iOS 9.x.
źródło
Jak już wspomniano, podejście do resetowania stanu powiadomień dla aplikacji na urządzeniu zostało zmienione na nowszą wersję iOS5.
To działa dla mnie na iOS6:
Jednak spowoduje to tylko ponowne wyświetlenie początkowego monitu - nie usunie żadnych innych rzeczy związanych ze stanem wypychania.
źródło
Plist: /private/var/mobile/Library/RemoteNotification/Clients.plist
... zawiera zarejestrowanych klientów powiadomień push. Usunięcie wpisu aplikacji spowoduje ponowne wyświetlenie monitu
źródło
Robienie tego programowo wydaje mi się działać za każdym razem. Mam kompilację z następującą linią bez komentarzy:
Uruchamiam go za każdym razem, gdy chcę wyrejestrować się z PN. Być może będziesz musiał wyraźnie zamknąć aplikację z listy ostatnich i pobawić się z Centrum powiadomień w aplikacji Ustawienia, aby zrobić to dobrze.
Ponadto monit interfejsu użytkownika proszący użytkownika o zarejestrowanie się w programie PN może się nie pojawić. Nie wiem, czy zostało wyłączone w którejkolwiek z ostatnich wersji iOS.
źródło
Jak powiedział ianolito, ustawienie daty powinno działać:
Zauważyłem na swoim urządzeniu (iPhone 4, iOS 6.1.2) ustawienie zegara systemowego o jeden dzień do przodu lub nawet kilka dni nie działało . Więc ustawiłem datę do przodu o miesiąc, a potem zadziałało i moja aplikacja ponownie wyświetliła monit o powiadomienie.
Mam nadzieję, że to pomoże każdemu, może to powodować ból głowy!
źródło
Zgadzam się z micmdk .. Miałem konfigurację środowiska programistycznego z powiadomieniami push i potrzebowałem sposobu, aby zresetować telefon, aby wyglądał jak początkowa instalacja… i tylko te dokładne kroki zadziałały dla mnie… wymaga DWÓCH ponownych uruchomień urządzenia:
Z APPLE TECH DOC:
Resetowanie alertu uprawnień do powiadomień push w systemie iOS Gdy aplikacja obsługująca funkcję push po raz pierwszy rejestruje się w celu otrzymywania powiadomień push, system iOS zapyta użytkownika, czy chce otrzymywać powiadomienia dotyczące tej aplikacji. Gdy użytkownik zareaguje na ten alert, nie zostanie on ponownie wyświetlony, chyba że urządzenie zostanie przywrócone lub aplikacja zostanie odinstalowana przez co najmniej jeden dzień.
Jeśli chcesz zasymulować pierwsze uruchomienie aplikacji, możesz pozostawić ją odinstalowaną na jeden dzień. Możesz osiągnąć to drugie bez czekania dnia, wykonując następujące kroki:
Usuń aplikację z urządzenia.
Całkowicie wyłącz urządzenie i włącz je ponownie.
Wybierz kolejno opcje Ustawienia> Ogólne> Data i czas i ustaw datę z wyprzedzeniem co najmniej o jeden dzień.
Całkowicie wyłącz urządzenie i włącz je ponownie.
źródło
Zastanawiałem się nad tym w przeszłości i doszedłem do wniosku, że nie był to właściwie ważny przypadek testowy dla mojego kodu. Nie sądzę, aby kod aplikacji mógł faktycznie odróżnić kogoś, kto odrzuca powiadomienia za pierwszym razem, a później wyłącza je w ustawieniach powiadomień iPhone'a. Prawdą jest, że środowisko użytkownika jest inne, ale jest to ukryte w wywołaniu registerForRemoteNotificationTypes.
Wywołanie unregisterForRemoteNotifications nie powoduje całkowitego usunięcia aplikacji z ustawień powiadomień - chociaż usuwa zawartość ustawień dla tej aplikacji. Więc to nadal nie spowoduje, że okno dialogowe zostanie pokazane użytkownikowi po raz drugi przy następnym uruchomieniu aplikacji (przynajmniej nie w wersji 3.1.3, z którą obecnie testuję). Ale jak powiedziałem powyżej, prawdopodobnie nie powinieneś się tym martwić.
źródło
Ta sama uwaga techniczna, o której mowa w zaakceptowanej odpowiedzi ( TN2265 - Rozwiązywanie problemów z powiadomieniami push), została od tego czasu zaktualizowana o rozwiązanie dla systemu iOS 5 i nowszych.
W skrócie: za każdym razem utwórz kopię zapasową i przywróć ją z niej.
źródło
W notatce Apple Tech opisano również, że można przywrócić urządzenie, aby zresetować okno dialogowe powiadomienia push.
Nie mówi, że możesz również użyć opcji „Ogólne -> Resetuj -> Usuń całą zawartość i ustawienia” na samym urządzeniu (iOS 5.x).
źródło
Oprócz odpowiedzi ianolito.
Miałem ten sam problem z aplikacją, którą pobrałem rok temu i początkowo odrzucając powiadomienia push. Chcąc odzyskać powiadomienia push, te kroki zadziałały dla mnie na iOS 7 beta. Nie mam pewności, które punkty dokładnie to spowodowały.
Dzięki Bogu nie musiałem „Wymazywać całej zawartości i ustawień”. Może to komuś pomoże.
źródło
Niedawno napotkałem podobny problem z aplikacją React-Native. Wersja systemu iPhone OS to 13.1 Odinstalowałem aplikację i próbowałem ją zainstalować, ale zauważyłem, że zarówno uprawnienia do lokalizacji, jak i powiadomienia nie były wyświetlane.
Po sprawdzeniu ustawień mogłem zobaczyć, że moja aplikacja ma włączoną lokalizację (z poprzedniej instalacji), jednak w powiadomieniu nie było odpowiedniego wpisu. Próbowano odinstalować i ponownie uruchomić bez ustawiania czasu, nie działało. Przy okazji, próbowałem też pobrać aplikację Appstore, nadal to samo zachowanie.
Problem został rozwiązany dopiero po ustawieniu czasu urządzenia.
źródło
Po wielu godzinach poszukiwań i bez powodzenia z powyższymi sugestiami, działało to jak urok dla 3.x +
źródło