2013-07-12 8 views
5

Ho configurato le notifiche push nella mia app. Ho il metodo:Come posso distinguere tra le notifiche push ricevute nell'app e toccate dall'esterno dell'app?

- (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 
     } 
} 

ho bisogno di distinguere tra tocchi di notifica di fuori della app, e semplicemente ricevuto la notifica in app. Qualsiasi aiuto?

+0

non ottenere quello che stai cercando .. :( –

+1

all'esterno dell'app, significa che l'app non è in esecuzione e riceviamo la notifica. ? –

+0

Sì, esatto, desidero andare a una vista specifica – KKendall

risposta

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

Questa non risponde alla domanda –

+0

@ManuelM. Allora come dovrei rispondere alla domanda? –

+0

Perché @KKendall vuole sapere se l'utente ha toccato la notifica o viene semplicemente dal server apns. La tua soluzione non risolve questa domanda. Questa soluzione determina solo se l'app è in background o no. Vedrai che lo stato corrente dell'app quando lo apri attraverso la notifica non è attivo Quindi, è lo stesso! Ho avuto a che fare con questo problema e la soluzione ideale Utilizzerò isHandlingRemoteNotification _applicationFlags. Ma è privato! Accidenti! –

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

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

usare dopo i metodi per la ricezione di Push Notification in primo piano così come sfondo. In Backgound, è possibile visualizzare Alert/Banner predefinito, ma in primo piano non è possibile visualizzare Alert/Banner ma è possibile gestirlo da UIAlertView.

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

Funziona bene ... !!!