Push notyfikacje jak działają

0

Jak załatwić ten problem.

Mam informacje która jest wysyłana do klienta push notką.

Jeśli klient nie ma, w momencie wysłania pusha, internetu bądź ma pushe wyłączone to ta informacja nigdy do niego potem nie dotrze?

Tzn. system wysyłający (np. GCM) nie zapamiętuje niedostarczonych wiadomości i nie przesyła w momencie poinformowania systemu przez klienta "teraz możesz wysyłać", zgadza się?

1

FCM ogólnie dba o to, żeby wysłać nawet jak ktoś jest offline, ale nie ma gwarancji dostarczenia wiadomości (chociaż niezawodność ma całkiem sporą). Tutaj możesz poczytać o tym trochę więcej.

Natomiast co do tego, co zrobić, żeby wysłać z większą gwarancją, to poinformować serwer o otrzymaniu wiadomości. Jeśli serwer nie otrzymał informacji zwrotnej po jakimś czasie, to wysłać jeszcze raz. Ale to wiąże się z innymi problemami.

Najlepiej, jeśli się da, nie opierać biznesu o gwarancję dotarcia powiadomień. Zazwyczaj się da.

2

IMO najpierw lepiej zrozumieć jaki problem rozwiązują push notyfikacje.

Wcześniej, by dostać notyfikacje aplikacja musiała działać w tle i nasłuchiwać jakiegoś połączania lub portu.
Co jakiś cas takie połączanie musi być podtrzymane jakimś pingiem.
To oznacza, że aplikacja musi być często wybudzana, więc procesor jest wybudzany, nadajniki włączane itd itp.
Do tego jeśli takich aplikacji jest kilka to pojawia się problem synchronizacji tych pingów. Brak synchronizacji prowadzi do częstszego wybudzania systemu.
Oznacza to więcej prądu dla procesora i większe zużycie baterii (różnica była ogromna).

Scentralizowanie tej logiki do postaci "push notification" rozwiązuje wszystkie te problemy. Mało tego aplikacja nie musi być nawet uruchomiona.
Na dodatek rozwiązuje to problemy częstych błędów w samodzielnej implementacji tego mechanizmu.

Przez jakiś czas google i apple miały swoje rozwiązania, ale ponieważ pojawiły się usługi łączące obie platformy w jedno, prowadziło do wycieku danych prywatnych.
Dlatego w tej kwestii Apple i Google dogadali się i zapewniają wspólne rozwiązanie.

Co do niezawodności, to z tego co wiem, z tego mechanizmu korzystają nawet komunikatory.

0
MarekR22 napisał(a):

IMO najpierw lepiej zrozumieć jaki problem rozwiązują push notyfikacje.

Wcześniej, by dostać notyfikacje aplikacja musiała działać w tle i nasłuchiwać jakiegoś połączania lub portu.
Co jakiś cas takie połączanie musi być podtrzymane jakimś pingiem.
To oznacza, że aplikacja musi być często wybudzana, więc procesor jest wybudzany, nadajniki włączane itd itp.
Do tego jeśli takich aplikacji jest kilka to pojawia się problem synchronizacji tych pingów. Brak synchronizacji prowadzi do częstszego wybudzania systemu.
Oznacza to więcej prądu dla procesora i większe zużycie baterii (różnica była ogromna).

To co opisałeś to nie są push noty tylko jakiś sposób podtrzymania połączenia z serwerem.

Push noty to coś co działa poza moja aplikacją, na Androidzie GCM (bądź jakikolwiek inny mechanizm wbudowany w telefon który posiadasz).

0

No to przecież @MarekR22 napisał, że FCM (kiedyś GCM) powstał właśnie po to, żeby nie trzeba było robić takich połączeń per aplikacja, tylko po to żeby było jedno połączenie z serwerami FCM albo APNS na poziomie systemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1