2010-02-25 10 views
69

Mam dwie aplikacje w sklepie iTunes - obie implementują powiadomienia push. Podczas testowania wysyłania powiadomień do tych aplikacji produkcyjnych zauważyłem, że push przeznaczony dla aplikacji A został zatytułowany i otworzył aplikację B.Czy token APN Device jest unikalny dla każdej aplikacji?

Obie te aplikacje są zainstalowane na tym samym telefonie. Zajrzałem do tabeli urządzeń i zobaczyłem, że token urządzenia (i oczywiście identyfikator urządzenia) wymienione dla obu aplikacji były takie same.

W razie potrzeby używam dwóch różnych certyfikatów na serwerze - po jednym dla każdej aplikacji. W pewnym sensie założyłem, że token urządzenia lub certyfikatu przekieruje wiadomość do właściwej aplikacji, ale oczywiście tak nie jest.

Widzę w komunikacie NSLog, że tokeny wysyłane z każdej aplikacji są rzeczywiście takie same.

Czy token urządzenia ma być unikalny dla każdej aplikacji? Jeśli tak, to każdy pomysł, w jaki sposób mój testowy telefon może wysyłać token urządzenia dla obu aplikacji na mój serwer. Pamiętaj, że pochodzą one z dwóch aplikacji dostępnych obecnie w sklepie z aplikacjami.

Dzięki za wszelką pomoc!

+0

dobre pytanie Doceniam to –

Odpowiedz

90

UWAGA: jest to stara odpowiedź, że jest prawdziwe tylko dla iOS < = 6. Zobacz user1641761's answer dla obecnego podejścia.

Wyliczyłem to. Tokeny urządzenia NIE są unikalne dla parowania telefonu z aplikacją. Są one unikalne tylko dla telefonu. Jeśli masz wiele aplikacji z tym samym telefonem, wszystkie będą używać tego samego tokena urządzenia. Certyfikat, którego użyjesz do wysłania powiadomienia, będzie określać, do której aplikacji się kieruje.

+1

Dzięki za pytanie i odpowiedź, to warto wiedzieć. +1 dla każdego. Sensowne jest, aby telefon zdecydował, która aplikacja została skierowana za pomocą certyfikatu serwera, jako uwierzytelnienie intencji programisty. –

+3

Witaj @Mups. W pierwszym pytaniu stwierdzasz, że: "W razie potrzeby używam dwóch różnych certyfikatów na serwerze - po jednym dla każdej aplikacji". Następnie w swojej odpowiedzi mówisz: "Certyfikat, którego użyjesz do wysłania powiadomienia, określi, do której aplikacji trafi" ... Dlaczego więc to nie zadziałało? Mam zamiar zaimplementować podobną konfigurację dla mojego backendu i chciałbym być pewien. Dzięki. – tompave

+0

@Wonderingtomato Utknąłem z tym samym problemem. Jakieś soln? – RickDavis

8

Mimo to, pamiętaj, że Apple zastrzega sobie prawo do zmiany urządzenia APNToken według własnego uznania, więc nie używaj go do jednoznacznej identyfikacji urządzenia/użytkownika.

47

iOS 7 obsługuje to inaczej. Teraz jest UNIKALNY.

Proszę patrz punkt 1 tego artykułu. http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

„Przed iOS 7, token Urządzenie było takie samo we wszystkich instalacji aplikacji na danym urządzeniu różne aplikacje w telefonie, czy Tap Tap Revenge czy USA Dzisiaj użyjemy tego samego adresu, tj. Tokena urządzenia, aby skierować powiadomienie push do Ciebie. Poświadczenia bezpieczeństwa, które sparujesz z wiadomością, sprawią, że trafi ona do odpowiedniej aplikacji. W systemie iOS 7 Apple poszło o krok dalej i upewniliśmy się, że tokeny urządzeń różnią się teraz w każdej instalacji aplikacji. Pomaga to chronić prywatność użytkowników poprzez usunięcie innego identyfikatora na poziomie telefonu. "

Zobacz także ios 7 device token is different for same device

+0

Ta odpowiedź powinna być oznaczona jako poprawna odpowiedź. – noahandthewhale

16

Udostępnianie mojego zrozumienia i kilka odpowiedzi od firmy Apple Developers:

  • Device Reklamowe
    • Device znacznik jest unikalny identyfikator urządzenia.
    • APN generuje token urządzenia przy użyciu unikalnego certyfikatu urządzenia (może być przy użyciu profilu informacyjnego)
    • Znacznik urządzenia może zostać zmieniony. Dlatego upewnij się, że za każdym razem przesyłasz zaktualizowany token urządzenia na serwer.
    • Urządzenie token jest SAME dla wszystkich aplikacji na urządzeniu.
    • Jest to urządzenie specyficzne dla urządzenia, a nie specyficzne dla aplikacji.
    • Token urządzenia może być inny w przypadku piaskownicy i produkcji.
      • W oparciu o profil udostępniania (piaskownica lub produkcja), APN mogą generować inny token urządzenia do piaskownicy i produkcji dla tego samego urządzenia.
    • Następnie, w jaki sposób powiadomienie push jest rozróżniane na urządzeniu? Dla jakiej aplikacji to jest?
      • Dokonuje tego na podstawie identyfikatora aplikacji i certyfikatu SSL zainstalowanego na serwerze (za pomocą którego powiadomienie jest przekazywane do serwera APNs).
  • Referencje
+1

Niepoprawna lub przestarzała odpowiedź. Twoja odpowiedź nie jest już ważna zgodnie z dokumentacją Apple. Proszę zapoznać się z dokumentem tutaj: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html –

0

Nie można użyć tokena jako unikatowy identyfikator, ale usunąć stary żeton korzystając Zapisz w keygen (pomoc z iTunes) i usuń stary token i dodaj nowy w bazie danych.

1

Token urządzenia do powiadamiania push jest specyficzny dla aplikacji. Nie specyficzne dla urządzenia. Token urządzenia będzie inny i unikalny dla wielu aplikacji na tym samym urządzeniu.

Zgodnie z jabłkiem,

Wspierając zdalnych powiadomień można dostarczyć na bieżąco informacje dla użytkowników aplikacji, nawet wtedy, gdy aplikacja nie jest uruchomiona. Aby móc odbierać i obsługi zdalnych powiadomień, Twoja aplikacja musi:

  • Włącz zdalnych powiadomień.

  • Zarejestruj się za pomocą usługi Apple Push Notification (APN) i otrzymaj token urządzenia.

  • Wyślij token urządzenia na serwer dostawcy powiadomień.

  • Implementacja obsługi obsługi przychodzących powiadomień zdalnych.

Aplikacja specyficzne urządzenie Token jest globalnie unikalny i identyfikuje jedną kombinację app-device. Po otrzymaniu tokena urządzenia od APN w Twojej aplikacji, Twoim obowiązkiem jest otwarcie połączenia sieciowego z dostawcą. Twoim obowiązkiem jest również, aby w Twojej aplikacji przekazać token urządzenia wraz z innymi istotnymi danymi, które chcesz wysłać do dostawcy, na numer .Gdy dostawca później wysyła zdalne żądania powiadomienia do APN, musi zawierać token urządzenia, wzdłuż z ładunkiem powiadomień. Aby uzyskać więcej informacji na ten temat, zobacz Omówienie APN.

Nigdy nie buforuj tokenów urządzenia w aplikacji; zamiast tego, pobierz je z systemu , gdy ich potrzebujesz. APN-y wysyłają nowy token urządzenia do Twojej aplikacji , gdy zdarzają się określone zdarzenia. Token urządzenia może być inny niż , na przykład gdy użytkownik odtwarza urządzenie z kopii zapasowej, , gdy użytkownik instaluje aplikację na nowym urządzeniu, a użytkownik ponownie instaluje system operacyjny. Pobranie tokena, a nie poleganie na pamięci podręcznej, zapewnia, że ​​do komunikacji z APN potrzebny jest obecny token urządzenia . Podczas próby pobrania tokena urządzenia, ale nie zmieniło się, metoda pobierania szybko zwraca wartość .

Można odnieść dokument jabłkowy tutaj Local and Remote Notification Programming Guide

Powiązane problemy