Czy aplikacje zamknięte (nie działające) mają dostęp do odświeżania aplikacji w tle?

1

Czy zamknięte aplikacje (tzn. Nie działające lub zawieszone) mają dostęp do aplikacji w tle odświeżającej lub modyfikującej stan programu w celu uzyskania dostępu do odświeżania aplikacji w tle? I odwrotnie, jeśli odświeżanie aplikacji w tle jest wyłączone, czy aplikacje mogą uzyskać dostęp tylko do danych na pierwszym planie?

Przykład 1: Aplikacje czatowe nadal otrzymują powiadomienia, jeśli znajdują się w stanie „nie działa”. Jak oni to robią?

Przykład 2: Jeśli zapisuję notatkę (przy wyłączonym odświeżaniu aplikacji w tle) i wracam do ekranu głównego przed zakończeniem zapisywania notatki, czy będzie ona nadal zapisywana?

Z dokumentów systemu iOS cykl życia aplikacji jest przedstawiony poniżej.

State changes in an iOS app

Przewodnik dla programistów iOS: cykl życia aplikacji

y3sh
źródło
Czy pytasz, jak kodować odświeżanie aplikacji w tle? Aplikacje mogą odświeżać wydarzenia w tle, pod warunkiem, że będą postępować zgodnie z prawidłowymi wytycznymi kodowania. Jak to zrobić, kodowanie nie jest tematem tej witryny.
fsb
@fsb To nie jest pytanie programistyczne. Ale może mógłbym uzyskać lepszą odpowiedź od programistów iOS. Która strona byłaby bardziej odpowiednia?
y3sh
Podany link zawiera odpowiedzi na pytania. Jeśli przeczytasz sekcję Wykonywanie w tle, zobaczysz, jak to się robi.
fsb
@fsb Jak się okazuje, BAR! = Wykonywanie w tle ... Myślę, że to właśnie było powodem mojego zamieszania.
y3sh

Odpowiedzi:

3

Nie należy mylić Zawieszone z Nie działa. Zawieszone oznacza, że ​​aplikacja jest nadal w pamięci, ale poza tym nie wykorzystuje żadnych zasobów. Brak działania oznacza, że ​​aplikacja w ogóle nie jest w pamięci z powodu mimowolnego zakończenia, ponieważ system wymagał zasobów dla aplikacji pierwszego planu lub ponieważ użytkownik wymusza zamknięcie aplikacji.

Odświeżanie aplikacji w tle (BAR) = / = „Tło”, jak pokazano na tym schemacie:

  • BAR umożliwia aplikacjom aktualizowanie treści w bardzo ograniczonym zakresie, zgodnie z harmonogramem ustawionym i egzekwowanym przez system iOS, zazwyczaj około raz dziennie.

  • Stan tła pokazany na tym diagramie to Wykonywanie w tle, które umożliwia aplikacjom wykonywanie pewnych zadań w tle. Wyłączenie BAR nie ma wpływu na aplikacje, które mogą korzystać z wykonywania w tle.

Wykonywanie tła jest zazwyczaj dozwolone tylko wtedy, gdy aplikacja nie została wymuszona przez użytkownika (wyjątek stanowią „aplikacje lokalizacyjne”). Aplikacje w dowolnym stanie, w tym Zakończone, mogą używać Wykonywania w tle, jeśli spełniają poniższe wymagania. W razie potrzeby zostaną ponownie uruchomione przez system w tle (ponownie, z zastrzeżeniem ograniczeń wymuszonego zakończenia pracy powyżej). Widzieć moja odpowiedź na podobne pytanie :

  • Aplikacje, które odtwarzają treści dźwiękowe dla użytkownika w tle, takie jak aplikacja odtwarzacza muzyki
  • Aplikacje rejestrujące treści audio w tle
  • Aplikacje, które stale informują użytkowników o ich lokalizacji, takie jak aplikacja do nawigacji
  • Aplikacje obsługujące protokół Voice over Internet Protocol (VoIP)
  • Aplikacje, które muszą regularnie pobierać i przetwarzać nowe treści
  • Aplikacje, które regularnie otrzymują aktualizacje z zewnętrznych akcesoriów

Jest jeszcze jeden przypadek, który jest pobierany w tle. Jest to jednak szczególny przypadek, ponieważ sama aplikacja jest nadal zawieszona, a proces pobierania jest przekazywany do systemu, na wypadek gdyby aplikacja musiała zostać zakończona przez system w celu odzyskania zasobów.

W odpowiedzi powiązanej nie ma powiadomień. Powiadomienia nielokalne są generowane gdzieś na serwerze i przesyłane do urządzenia za pośrednictwem Apple Push Notifications (APN). Akt otrzymania powiadomienia nie wskazuje, że sama aplikacja zrobiła cokolwiek.

W przykładzie z notatką, gdy aplikacja notatki przejdzie do tła, otrzyma krótki czas na zapisanie stanu. Jeśli trwa proces zapisywania notatki i nie może go ukończyć w dozwolonym czasie, może poprosić o rozszerzenie, a następnie powiadomić system, gdy zostanie zakończony, aby aplikacja mogła zostać zawieszona. Ten rodzaj pracy w tle może być używany przez dowolną aplikację, a nie tylko te, które należą do kategorii wymienionych powyżej.

tubedogg
źródło
Świetna odpowiedź ... wydaje się, że iOS śledzi przyzwyczajenia użytkowników za pomocą aplikacji, aby najskuteczniej planować interwały BAR przy użyciu aplikacji, łączności Wi-Fi i żywotności baterii. Wyobrażam sobie, że jeśli dużo używasz aplikacji, otrzymasz więcej aktywności BAR. Więc odpowiedź jest taka, że ​​stan uruchamiania aplikacji nie ma znaczenia. Powiązane pytanie omawiające interwały BAR: apple.stackexchange.com/questions/104572/…
y3sh