2014-05-20 6 views
15

Po zakończeniu działania aplikacji podczas pobierania w tle, należy wywołać blok zakończenia pracy z jednym z trzech stanów UIBackgroundFetchResult: UIBackgroundFetchResultNoData, UIBackgroundFetchResultNewData lub UIBackgroundFetchResultFailed.Jak są obsługiwane typy UIBackgroundFetchResult w tle iOS po wywołaniu procedury obsługi zakończenia?

W jaki sposób każdy z tych trzech wyników jest obsługiwany przez system operacyjny po wywołaniu procedury obsługi zakończenia?

Odpowiedz

12

Z iOS App App Programming guide:

Gdy aplikacja: performFetchWithCompletionHandler: metoda swojego delegata nazywa użyć tej metody, aby sprawdzić nowe treści i pobrać tę zawartość, jeśli jest ona dostępna. Po zakończeniu pobierania uruchom dostarczony blok obsługi zakończenia, przekazując wynik wskazujący, czy zawartość była dostępna. Wykonywanie tego bloku mówi systemowi, że może przenieść twoją aplikację z powrotem do stanu zawieszenia i ocenić zużycie energii. Aplikacje, które pobierają niewielkie ilości treści szybko i dokładnie odzwierciedlają, kiedy treści do pobrania są bardziej prawdopodobne w przyszłości, niż aplikacje, których pobranie zajmuje więcej czasu.

Nie dają nam tak wielu szczegóły, ale myślę, że jest wystarczająco jasne: przekazujesz wynik pobrania do systemu, aby mógł zdecydować, kiedy dać czas wykonania tła (i ile).
przykład rozważmy dwie różne aplikacje:
- jeden pobrań plików, które są aktualizowana co noc
- inne pliki do pobrania, które są częściej aktualizowane, wiele razy w ciągu dnia

W obu przypadkach system obudzi do Twojej aplikacji, odnotowuje czas rozpoczęcia, Twoja aplikacja rozpoczyna pobieranie, a następnie informuje system, że dostępna jest lub nie jest dostępna.

Po pewnym czasie zobaczysz, że system będzie budził pierwszą aplikację rzadziej niż druga, optymalizując zużycie baterii. Co więcej, jeśli użyjesz NSURLSession do rozpoczęcia pobierania, system oceni zużycie energii przez aplikację (ponieważ korzystanie z NSURLSession wiąże się z "nieograniczonym" czasem pobierania plików), nawet ta metryka służy do decydowania, jak często się budzisz aplikacja.

Powiązane problemy