Chciałem tylko dostroić się z perspektywy pierwszej osoby, a my wyślemy miliony zgłoszeń APNS codziennie.
Cytaty z cytatów @Eran są niestety najlepszym źródłem informacji o tym, jak Apple zarządza gniazdami APNS. W przypadku niewielkich rozmiarów wszystko jest w porządku, ale ogólnie dokumentacja firmy Apple jest bardzo przekręcona w stosunku do zwykłego, niskonakładowego programisty. Zobaczysz wiele nieudokumentowanych zachowań, gdy dojdziesz do skali.
Część tego dokumentu dotycząca asynchronicznego wykrywania błędów ma krytyczne znaczenie dla wysokiej przepustowości. Jeśli nalegasz na blokowanie błędów przy każdym wysyłaniu, będziesz musiał silnie zrównoleglować swoich pracowników, aby utrzymać przepustowość. Zalecanym sposobem jest jednak po prostu wysłać tak szybko, jak można wysłać, a gdy pojawi się i błąd: naprawić i powtórzyć.
Część tego postu biorę wyjątek jest:
Device tokens should almost all be valid if you've captured them correctly and you're sending them to the correct environment. So it makes sense to optimize assuming failures will be rare.
orzekać tej rady z takim ogromnym „IF” wydaje się niezwykle mylące. Mogę niemal zagwarantować, że większość programistów nie przechwytuje tokenów i nie przetwarza w 100% informacji zwrotnej firmy Apple w prawidłowy sposób. Nawet gdyby tak było, system jest z natury stratny, więc nastąpi dryf.
Widzimy niezerową liczbę błędów nr 8 (nieprawidłowy token urządzenia), które przypisuję do zrootowanych telefonów, błędów klienta lub użytkowników celowo podrabiających nam tokeny. W przeszłości zauważyliśmy również szereg błędów nr 7 (nieprawidłowy rozmiar ładunku), które znaleźliśmy w nieprawidłowo zakodowanych wiadomościach, które programista dodał na końcu. To oczywiście była nasza wina, ale to jest moja uwaga - twierdzenie "optymalizacja przy założeniu, że awarie będą rzadkie" jest błędną wiadomością dla programistów nauki. Co powiedziałbym zamiast byłoby:
Assume errors will happen.
Hope that they happen infrequently, but code defensively in case they don't.
Jeśli zoptymalizować zakładając błędy będą rzadkie, może być wprowadzenie infrastruktury zagrożone, gdy usługa APNS idzie w dół, a każda wiadomość wysłaniu zwraca błąd # 10.
Problem pojawia się, gdy próbuje się dowiedzieć, jak prawidłowo reagować na błędy. Dokumentacja jest niejednoznaczna lub nieobecna, jeśli chodzi o prawidłową obsługę i odzyskiwanie po różnych błędach. Zostało to najwyraźniej ćwiczeniem dla czytelnika.
znalazłeś sposób, aby wysłać masowe powiadomienia push dla iPhone? ponieważ nie znajduję żadnego:/ –
Jeśli dopiero zaczynasz, to rozważ rozpoczęcie z Urban Airship, który daje ~ 1M darmowych przeskoków miesięcznie, ale w inny sposób jest szalenie drogi. Jeśli masz więcej woluminu niż to, możesz użyć usługi SNS Amazon (która jest o kilka rzędów wielkości tańsza niż Urban Airship i jest to, czego używam). – er0
ale wysyłam moje push z darmowego, więc musi być sposób, aby wysłać luzem również za darmo –