Czy po utworzeniu token urządzenia do powiadamiania push kiedykolwiek się zmienia?
Przykład, kiedy aplikacja jest aktualizowana? czy w jakimkolwiek innym przypadku może się zmienić?
Czy po utworzeniu token urządzenia do powiadamiania push kiedykolwiek się zmienia?
Przykład, kiedy aplikacja jest aktualizowana? czy w jakimkolwiek innym przypadku może się zmienić?
Odpowiedzi:
Z [Dokumentacji Apple ApplePushService] 2
źródło
Oficjalna dokumentacja Apple jest w tej kwestii niejasna. Zauważyłem, że token jest niezmienny dla danego urządzenia, aplikacji i domeny (produkcja a piaskownica). Uważam, że musi to pozostać prawdą, aby system działał niezawodnie. Rozważmy sytuację, w której aktualizacja aplikacji wyzwala nowy token APN; gdybym używał najlepszej nowej aplikacji podobnej do Twittera z włączonymi powiadomieniami, co by się stało, gdy zaktualizuję moją aplikację z iTunes? Czy powinienem oczekiwać, że powiadomienia będą nadal wysyłane, mimo że nie uruchomiłem aplikacji od czasu „zsynchronizowania” aktualizacji na moim urządzeniu? Czynność zmiany aplikacji nie może wpłynąć na system APN, ponieważ system operacyjny może otrzymywać powiadomienia w Twoim imieniu, nawet jeśli nie uruchomiłeś zaktualizowanej aplikacji.
Dla jasności Apple stwierdza: „Aplikacja powinna rejestrować się [na serwerach APN] przy każdym uruchomieniu i przekazywać dostawcy aktualny token”. Całkowicie się zgadzam; Dzięki temu Twoja aplikacja będzie chroniona przed złymi założeniami lub nietypowymi sytuacjami.
Jedna z odpowiedzi na pytanie Czy tokeny powiadomień push są unikalne we wszystkich aplikacjach na jednym urządzeniu? wskazuje, że tokeny urządzeń są unikalne dla każdej „instalacji systemu operacyjnego”; i że przywrócenie danych z kopii zapasowej na urządzenie utrzymałoby token, ale wyczyszczenie urządzenia spowoduje, że otrzyma nowy token. Byłoby to całkowicie zgodne z intencjami Apple dotyczącymi płynnego działania i prywatności: wyczyszczenie urządzenia jest na tyle poważne, że być może gwarantuje nowe skojarzenie, ale użytkownik przywracający obraz po aktualizacji systemu operacyjnego chciałby zachować swoje istniejące powiadomienia. Jeśli przypomnę sobie ostatnią aktualizację iOS5 na moim iPadzie, przywróciłem ostatnią kopię zapasową po aktualizacji, aby zachować spójność mojego tokena powiadomień. [Edytuj: przywracanie kopii zapasowej do innego pliku urządzenie NIE powieli tokena.]
uwaga: nie mam ostatecznej wiedzy na ten temat, tylko rozsądne doświadczenie w pracy z APN (jako niezależny programista). Jak zwykle najlepiej zweryfikować swoje przypuszczenia.
Aktualizacja (czerwiec 2012):
Niedawno miałem okazję> porozmawiać z inżynierami Apple i b> przeprowadzić kilka testów w świecie rzeczywistym i chciałem przedstawić wyniki:
Aby być kompletnym, kiedy mówię o zwrocie tokenu APN, zakładam kontekst pojedynczego identyfikatora / aplikacji pakietu.
Po pierwsze, inżynierowie Apple powiedzieli, że nie powinno być możliwe, aby dwa urządzenia zwracały ten sam APN. Pomimo poniższych komentarzy, nie byłem w stanie zidentyfikować okoliczności, w których to zawodzi.
Po drugie, oto sekwencja testów i wyniki aktualizacji:
Zacznij od iOS4 zainstalowanego na iPhone4; urządzenie do tworzenia kopii zapasowych w iTunes
Uaktualnij do iOS5
Z poprzedniego testu wiem, że token APN jest teraz inny
Przywróć kopię zapasową na urządzenie
Token APN jest teraz taki sam jak w kroku 1.
Zresetuj iOS (czyste urządzenie)
Token APN ulegnie zmianie
Utwórz kopię zapasową innego telefonu w iTunes i przywróć tę kopię zapasową, aby przetestować urządzenie; w zasadzie przywracam „złą” kopię zapasową, tak jakbym zmieniała telefony.
Token APN ponownie się zmienia; ponadto jest odrębny i nie pasuje do tokenów ani do tokenów oryginalnych, ani do tokenów „sklonowanych”.
Przywróć „prawidłową” kopię zapasową na urządzenie.
Token APN jest teraz taki sam jak w kroku 1.
Na koniec zaktualizowałem telefon do iOS6 (beta2), przywróciłem kopię zapasową i ponownie przetestowałem. Zgodnie z oczekiwaniami token kontynuował dopasowywanie tokenu w kroku 1.
W tym momencie jestem całkiem pewien, że tokenów APN nie można powielać między różnymi urządzeniami; być może stało się to jako błąd we wcześniejszych wersjach iOS, ale jestem przekonany, że iOS5 (i prawdopodobnie iOS6) poprawnie obsługuje tokeny APN.
Aktualizacja (sierpień 2012)
Właśnie sobie sprawę, że nie dodaje się następująco: tokeny urządzenie będzie zmienić. Jeden z deweloperów Apple podzielił się ze mną, że tokeny faktycznie wygasają (chyba po 2 latach). Z wielu powodów jest to wystarczająco długie, aby można je było uznać za niezmienne.
[Nie martwię się, że muszę aktualizować swoje skrypty testowe nowymi tokenami co dwa lata, zwłaszcza że co roku zmieniam telefony.]
źródło
Właśnie przetestowałem to ze zmianami tokena iOS9 i APN Push, jeśli ponownie zainstaluję aplikację.
źródło
TAK , tokeny urządzeń mogą się zmieniać.
Za każdym razem, gdy Twoja aplikacja otrzyma token, powinna go przechowywać. Wtedy, gdy zostanie odebrany nowy żeton (który będzie się zdarzyć, w końcu), porównać nowy żeton zapisany znak, a jeśli są one różne:
nil
)Z praktycznego punktu widzenia ostatni krok jest najprawdopodobniej nietrywialny. Na przykład, jeśli masz usługę, która wysyła alerty pogodowe do tokena urządzenia na podstawie kodu pocztowego subskrybowanego przez urządzenie, musisz przekazać
old_token
inew_token
do tej usługi, aby mogła zaktualizować dostawę.Ergo, ogólnie rzecz biorąc, 100% interfejsów API akceptujących „token urządzenia” musi mieć również jakieś
UPDATE
udogodnienia dla tego tokena. Aby nie budować tego jest to, aby zbudować dla mis-dostarczone i niedostarczonego powiadomień.źródło
Token urządzenia zmienia się z iOS 8 i nowszych
Zobacz poniższy tekst ze strony internetowej Apple. Rejestracja, planowanie i obsługa powiadomień użytkowników
źródło
Myślę, że warto o tym wspomnieć, ponieważ nikt nie zrobił tego, że token zmienia się po Twoim sprawdzeniu
unregisterForRemoteNotifications
. Kiedy dzwoniszregisterForRemoteNotifications
następnym razem, token jest inny. Nie udało mi się znaleźć żadnego potwierdzenia tego w dokumentach Apple, ale sam byłem świadkiem takiego zachowania. Proszę o tym pamiętaćźródło
Nie powinno się to zmienić, chyba że Twoja aplikacja zostanie przywrócona na nowe urządzenie (w tym momencie nie będzie ponownie proszona o akceptację powiadomień push, a po prostu wyśle zarejestrowane połączenie, w którym powinieneś zaakceptować nowy token).
Ale Apple nie gwarantuje, że nigdy się nie zmieni (stąd dokumentacja nigdy o tym nie wspomina). Lepiej zaprogramuj na najgorsze i załóż, że pewnego dnia może się to zmienić. Regularne wysyłanie tokena na serwer umożliwia również usuwanie tokenów, które nie były zarejestrowane od jakiegoś czasu i prawdopodobnie odinstalowały Twoją aplikację lub straciły zainteresowanie jakiś czas temu (a dokumentacja określa to jako pożądane zachowanie!).
źródło
Od - Apple Docs
Do tego:
źródło
Linki w Apple szybko stają się przestarzałe! więc cytuję to, co wydaje się teraz całkiem jasne:
Z tego przewodnika
źródło
W odniesieniu do powiadomień push firmy Apple
Token urządzenia jest Twoim kluczem do wysyłania powiadomień push do Twojej aplikacji na określonym urządzeniu. Tokeny urządzeń mogą się zmieniać, więc aplikacja musi się ponownie rejestrować za każdym razem, gdy jest uruchamiana, i przekazywać otrzymany token z powrotem na serwer. Jeśli nie uda się zaktualizować tokena urządzenia, zdalne powiadomienia mogą nie dotrzeć do urządzenia użytkownika. Tokeny urządzeń zmieniają się zawsze, gdy użytkownik przywraca dane kopii zapasowej na nowe urządzenie lub komputer albo ponownie instaluje system operacyjny. Podczas migracji danych na nowe urządzenie lub komputer użytkownik musi raz uruchomić aplikację, zanim zdalne powiadomienia będą mogły zostać dostarczone na to urządzenie.
Nigdy nie buforuj tokena urządzenia; zawsze otrzymuj token z systemu, kiedy tylko go potrzebujesz. Jeśli aplikacja została wcześniej zarejestrowana na potrzeby powiadomień zdalnych, ponowne wywołanie metody registerForRemoteNotifications nie powoduje żadnego dodatkowego obciążenia, a system iOS natychmiast zwraca istniejący token urządzenia do delegata aplikacji. Ponadto system iOS wywołuje metodę pełnomocnika za każdym razem, gdy zmienia się token urządzenia, a nie tylko w odpowiedzi na rejestrację lub ponowną rejestrację aplikacji.
źródło
Zgodnie z tym linkiem token urządzenia
źródło
Tak , może się zmienić. Idealnie, gdy kiedykolwiek otrzymamy token za pośrednictwem metody callback
Aplikacja powinna zarejestrować / odświeżyć token na zdalnym serwerze. Zapewni to synchronizację tokenów APNS i serwera.
Zgodnie z dokumentacją Apple ,
źródło
Urządzenie przekazuje token podczas instalacji aplikacji.
Oznacza to, że jeśli ponownie zainstalujesz aplikację, to się zmieni ; nie ma znaczenia, jeśli zrobisz to z kopii zapasowej, aktualizacji iOS itd.
Prawidłowym sposobem korzystania z niego, aby uniknąć jakiegokolwiek problemu, jest uzyskanie tego podanego
NSPAppDelegate
przy każdym uruchomieniu aplikacji, w metodziedidRegisterForRemoteNotificationsWithDeviceToken
źródło