2012-05-18 7 views
5

Chcę uzyskać dane z wiadomości Push powiadomienia. Udało mi się uzyskać dane, gdy aplikacja jest na pierwszym planie iw tle. ale nie mogę uzyskać danych po zamknięciu aplikacji i naciśnięciu przycisku przeglądania użytkownika w powiadomieniu push. Piszę kod w aplikacji, który się zakończył. Ten kod powoduje awarię aplikacji po naciśnięciu przycisku View powiadomienia Push. Jeśli skomentuję kod, aplikacja nie ulegnie awarii. Uprzejmie pomóż mi pobrać dane z powiadomień Push po zamknięciu aplikacji i naciśnij przycisk przeglądania użytkownika w powiadomieniu Push. Naprawdę to doceniam.Dane powiadomień push pobieranie

if(launchOptions != nil){ 
     NSDictionary *tmpDic = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
     if (tmpDic!=nil) { 
      pushedMessage=[NSString stringWithFormat:@"%@",[[tmpDic objectForKey:@"aps"] objectForKey:@"alert"]]; 
      pushedCountry=[NSString stringWithFormat:@"%@",[tmpDic objectForKey:@"country"]]; 
      [self saveToDatabase]; 
     } 
    } 
+0

jesteś praca w iOS 4 Ya IOS 5 – Deepesh

+0

masz na myśli, że nie jest to możliwe w iOS4 i 5? –

+0

proszę Nslog tmpDic i check in device console – Deepesh

Odpowiedz

-1

Gdy klikniesz przycisk Widok

- (void)application:(UIApplication*)application didReceiveRemoteNotification:  (NSDictionary*)userInfo 
{ 
} 

ta metoda jest wywoływana i userinfo będzie zawierać wszystkie dane

Rzeczy, które robisz w didfinishlaunch metodę zrobienia w didReceiveRemoteNotification:

0

nie całkowicie zrozumieć, co wywoławcza ale można zrobić rzeczy z tego, co jest bycie z funkcją Push w aplikacji delegata

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo 
{ 
NSLog(@"Received notification: %@", userInfo); 
[self addMessageFromRemoteNotification:userInfo updateUI:YES]; 
} 

Teraz można dodać te dane z danymi rdzenia lub sqlite. Może to nie dotyczyć Twojego pytania, ale jest to najlepsze, co mogę podać na podstawie tego, o co prosiłeś w swoim pytaniu.

0

Zobacz mój komentarz na temat powyższej odpowiedzi.

Oto Apple doc:

Jeśli aplikacja nie działa, gdy powiadomienie Push przybywa, metoda uruchamia aplikację i zapewnia odpowiednią informację w słowniku opcji startu. Aplikacja nie nazywa tej metody obsługą , która wysyła powiadomienia. Zamiast tego, Twoja implementacja aplikacji : willFinishLaunchingWithOptions: lub application: didFinishLaunchingWithOptions: metoda musi uzyskać dane ładunku powiadomienia push i uzyskać odpowiednią odpowiedź.

Więc trzeba wdrożyć:

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo 

Jak również manipulowania launchOptions w:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
+0

Finicky wdrożenie przez Apple. – Chris

1

Spróbuj tego ...

Dodaj ten kod do appdelegate. m => didFinishLaunchingWithOpcje

if ([launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]) { 

    [self application:application didReceiveRemoteNotification:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]]; 

} 
1

Od ios7 mamy poniżej metodę delegata do obsługi powiadomienia wypychania, gdy aplikacja jest w tlo lub nie działa

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler