Chciałbym, aby moja aplikacja mogła - powiedzmy, co 12 godzin - nawet jeśli aplikacja nie działa obecnie lub jest w tle, wysłać żądanie HTTP do serwera, uzyskać mały plik z numerem wersji i jeśli wersja na serwerze jest wyższa niż wersja na kliencie, a następnie pobierz więcej plików na dysk, aby przy następnym uruchomieniu aplikacji znajdzie nową zawartość na dysku.Czasowe przetwarzanie w tle iOS
Jakie wzorce najlepiej pasują do tego zadania w iOS?
Kilka przychodzi mi na myśl, ale nie jestem tak doświadczony.
- Być może powiadomienia push, serwer musi wysłać wiadomość do wszystkich klientów, gdy dostępna jest nowa wersja.
- Czy jest coś podobnego do Androida Service, które może pomóc?
- A może za każdym razem, gdy aplikacja się uruchamia (lub wychodzi na pierwszy plan), po prostu pinguj serwer i sprawdź, czy jest coś nowego.
- Lub za każdym razem, gdy aplikacja zacznie pingować serwer i dodać zegar przez następne 12 godzin, jeśli ta aplikacja będzie nadal na pierwszym planie.
- Lub za każdym razem, gdy aplikacja się uruchamia, sprawdź wartość preferencji, a jeśli ostatnio serwer był pingowany było więcej niż 12 godzin temu, a następnie ping teraz. A następnie zapisz ten czas pingowania.
Opcja 1 może być bardziej obciążona na serwerze i może być bardziej skomplikowana w implementacji (należy rozważyć ios newbe), ale może być jedyną opcją do aktualizacji w tle. Ale mimo wszystko, nadal nie chcę, aby użytkownik musiał reagować na jakiś niski poziom aktualizacji b/wa klienta i serwera (i to jest to, co jest), więc jeśli powiadomienia push nie mogą przejść bezpośrednio do aplikacji i wykonać coś bez interwencji użytkownika, ta opcja nie lata.
Opcje 3-5 są możliwe i nie brzmią zbyt mocno, ale działałyby tylko wtedy, gdy aplikacja znajduje się na pierwszym planie.
Z tego, co wiem, aplikacje działające w tle mogą odtwarzać muzykę, otrzymywać aktualizacje lokalizacji lub aktualizacje VoIP. Jest nawet this hack z cichym dźwiękiem, który próbował uciec przed tym ograniczeniem. (i nie został zatwierdzony do sklepu).
Być może ograniczenia na miejscu są słuszne, więc w jaki sposób mogę grać według reguł i być w stanie osiągnąć okresowe pingowanie serwera (lub, bardziej ogólnie, rozwiązać problem okresowej synchronizacji b/w klientów i serwerów, nawet gdy aplikacje są w bg)?
Dzięki
Proponuję 4 lub 5. Aplikacja może nic zrobić, że chce w tle, ale tylko przez 10 minut. Powiadomienia push mogą uruchamiać kod tylko wtedy, gdy wyświetlają komunikat, a użytkownik decyduje się je otworzyć. – ughoavgfhw