2013-07-12 8 views
5

Mam ustawienia powiadomień push w mojej aplikacji. Mam metodę:W jaki sposób mogę rozróżnić między powiadomieniami push otrzymanymi w aplikacji i dotkniętymi poza aplikacją?

- (void)application:(UIApplication *)application didReceiveRemoteNotification:  (NSDictionary *)userInfo 
{ 
     if() 
     { 
      //app is in foreground to get here 
     } 
     else if() 
     { 
      //app is in background and then the notification is clicked, to get here 
     } 
} 

Muszę rozróżnić dotknięcia powiadomienia poza aplikacją i po prostu otrzymywać powiadomienie w aplikacji. Jakaś pomoc?

+0

nie dostaniesz tego, co próbujesz .. :( –

+1

przez aplikację zewnętrzną, oznacza to, że aplikacja nie działa, a my otrzymujemy powiadomienie, klikniesz na to powiadomienie i uruchomisz swoją aplikację i chcesz coś wykonać w tym momencie ? –

+0

Tak, właściwie chcę przejść do określonego widoku – KKendall

Odpowiedz

7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    if (application.applicationState == UIApplicationStateActive) 
     // app was already in the foreground 
    else 
     // app was just brought from background to foreground 
    ... 
} 
+1

To nie odpowiada na pytanie –

+0

@Manuel M. Więc jak mam odpowiedzieć na pytanie? –

+0

Ponieważ @KKendall chce wiedzieć, czy użytkownik stuknął w powiadomienie lub to po prostu pochodzi z serwera Apns, Twoje rozwiązanie nie rozwiązuje tego problemu. To rozwiązanie określa, czy aplikacja działa w tle, czy nie. Obecny stan aplikacji po otwarciu jej przez powiadomienie nie jest aktywny Tak, to jest to samo! Miałem do czynienia z tym problemem i idealnym rozwiązaniem Używam isHandlingRemoteNotification _applicationFlags. Ale jest prywatne! Cholera! –

2
- (void)applicationWillResignActive:(UIApplication *)application 
    { 
     applicationIsActive = NO; 
    } 
    - (void)applicationDidBecomeActive:(UIApplication *)application 
    { 
     applicationIsActive = YES; 
    } 

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
if (applicationIsActive) 
{ 
} 
    else 
{ 
    } 
} 
2

używać następujących sposobów otrzymania powiadomienia wypychania na pierwszym planie, jak i tło. W Backgound możesz pokazać domyślny alert/baner, ale na pierwszym planie nie możesz wyświetlić alertu/banera, ale możesz nim zarządzać za pomocą UIAlertView.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    if (application.applicationState == UIApplicationStateBackground | application.applicationState == UIApplicationStateInactive) 
    { 
     // Application is in Background 
    } 
    else 
    { 
     // Application is in Foreground 
    } 
} 

Działa dobrze ... !!!

Powiązane problemy