obsługa powiadomień push

Czytam dokumenty Apple

Obsługa powiadomień lokalnych i zdalnych

i wydaje mi się, że mam sprzeczne stwierdzenia. Czy ktoś może wyjaśnić te wątpliwości? Porozmawiajmy teraz ściśle o zdalnym powiadamianiu (w przeciwieństwie do lokalnego).

Dokumenty mówią, że jeśli przycisk akcji na powiadomieniu zostanie naciśnięty, wywołuje aplikację: didFinishLaunchingWithOptions i przekazuje ładunek powiadomienia. Później mówi, że aplikacja działa na pierwszym planie, dostarcza powiadomienie za pośrednictwem aplikacji: didReceiveRemoteNotification :. Oznacza to dla mnie, że gdy aplikacja jest uruchomiona w tle lub nie działa, wywoływana jest aplikacja: didFinishLaunchingWithOptions. W przeciwnym razie wywoływana jest aplikacja: didReceiveRemoteNotification:

Później jest notatka iOS, która mówi:

„Uwaga dla systemu iOS: w systemie iOS można określić, czy aplikacja jest uruchamiana w wyniku dotknięcia przycisku akcji przez użytkownika lub czy powiadomienie zostało dostarczone do już uruchomionej aplikacji, sprawdzając stan aplikacji. W implementacji aplikacji przez delegata : didReceiveRemoteNotification: lub aplikacja: didReceiveLocalNotification: metoda, pobierz wartość właściwości applicationState i oceń ją.Jeśli wartością jest UIApplicationStateInactive, użytkownik stuknął przycisk akcji, jeśli wartość to UIApplicationStateActive, aplikacja znajdowała się na pierwszym planie po otrzymaniu powiadomienia. „

Oznacza to dla mnie, że aplikacja: didReceiveRemoteNotification: jest wywoływana zarówno wtedy, gdy aplikacja jest już na pierwszym planie, jak i gdy użytkownik naciska przycisk akcji (lub przesuwa suwak akcji w iOS 5) na pierwszy plan / uruchamia aplikację.

Źródłem mojego zamieszania może być pierwsza część, w której dokumenty sugerują, że ładunek powiadomień jest wysyłany z aplikacją: didFinishLaunchingWithOptions: metoda lub niezrozumienie, czym jest aplikacja „uruchomiona” (czy aplikacja w tle jest uważana za „uruchomioną”?) . Dokumentacja aplikacji: didReceiveRemoteNotification: stwierdza, że ​​jest ona wywoływana dla „uruchomionych” aplikacji.

Podsumowując, czy mogę uzyskać wyjaśnienie na temat:

1) Czy aplikacja: didReceiveRemoteNotification: zawsze wywoływana, gdy aplikacja jest na pierwszym planie lub gdy użytkownik wybierze „działanie” w powiadomieniu? Jeśli nie, w jaki sposób rozumiemy notę ​​iOS dotyczącą określenia, czy stan aplikacji jest aktywny czy nieaktywny?

2) Czy aplikacja działająca w tle jest „uruchomiona”, przynajmniej w sensie aplikacji żądającej dokumentów: didReceiveRemoteNotification służy do uruchamiania aplikacji?

3) Czy do ukończenia jest aplikacja w tle UIApplicationStateInactive lub Active?

questionAnswers(2)

yourAnswerToTheQuestion