przede wszystkim powiadomień push nie są „silne”, jeśli po prostu niech siedzieć powiadomienia dla dostatecznie długi (na przykład telefon wyłączony przez wiele dni) zostanie on odrzucony. Musisz wykonać niestandardowe przetwarzanie na zapleczu, aby zachować zawartość wysyłaną w powiadomieniach.
W protokole UIApplicationDelegate
znajduje się application:didFinishLaunchingWithOptions:
. Jeśli Twoja aplikacja zostanie uruchomiona przez użytkownika, po dotknięciu odpowiedniego przycisku w powiadomieniu push, słownik powiązany z wywołaniem metody będzie zawierał informacje dotyczące tego powiadomienia; jeśli twoja aplikacja jest już uruchomiona, zamiast tego zostanie wywołana application:didReceiveRemoteNotification:
(również w protokole delegatów).
Więc
Jeśli aplikacja jest uruchomiona, a następnie wdrożyć application:didReceiveRemoteNotification:
tak masz ładunek. W przeciwnym razie nic się nie dzieje.
Jeśli aplikacja nie zostanie uruchomiona w momencie wysłania powiadomienia, użytkownik dotknie alertu z powiadomieniem i uruchomi aplikację, a aplikacja uzyska ładunek, jeśli implementuje application:didFinishLaunchingWithOptions:
. W przeciwnym razie nic nie dostaniesz.
Zauważyłem, że kiedyś wcześniej (07.03.2012) "launchOptions" nie jest już używany. Po otwarciu aplikacji zamiast tego wywoływana jest 'didReceiveRemoteNotification'. – Jacksonkr
Jeśli nie zostanie uwzględniony alert, metoda didReceiveRemoteNotification: nigdy nie jest wywoływana dla aplikacji w tle. W przypadku iOS 6 nie można odbierać ładunków bez interakcji z użytkownikiem, gdy aplikacja nie znajduje się na pierwszym planie. Dokumentacja wspomina o tym fakcie, choć cicho. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW4 –
+1 Świetne wyjaśnienie !! – swiftBoy