2013-07-12 3 views
5

Ich habe Push-Benachrichtigungen in meiner App eingerichtet. Ich habe die Methode:Wie kann ich zwischen Push-Benachrichtigungen unterscheiden, die in der App empfangen und von außerhalb der App berührt wurden?

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

Ich brauche zwischen Berührungen der Meldung außerhalb der Anwendung, und einfach Empfangen der Benachrichtigung in der Anwendung zu unterscheiden. Irgendeine Hilfe?

+0

nicht bekommen, was versuchst du .. :( –

+1

außerhalb der App, du meine App läuft nicht und wir erhalten Benachrichtigung. Sie klicken auf diese Benachrichtigung und Ihre App läuft. Und Sie möchten etwas in diesem Moment durchführen ? –

+0

Ja genau, ich möchte eigentlich zu einer bestimmten Ansicht gehen .. – KKendall

Antwort

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

Dies beantwortet nicht die Frage –

+0

@ManuelM.Wie soll ich dann die Frage beantworten? –

+0

Weil @KKendall will, ob der Benutzer auf die Benachrichtigung geklopft hat oder es kommt einfach vom apns server.Ihre Lösung löst diese Frage nicht.Diese Lösung bestimmt nur, ob die App im Hintergrund ist oder nicht.Sie ​​sehen, dass der aktuelle Zustand der App, wenn Sie es über die Benachrichtigung öffnen, nicht aktiv ist Also, es ist dasselbe! Ich habe mich mit diesem Problem und der idealen Lösung beschäftigt ld benutze die isHandlingRemoteNotification _applicationFlags. Aber ist privat! Verdammt! –

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

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

Verwenden Methoden zur Aufnahme von Push-Benachrichtigung in den Vordergrund als auch Hintergrund Nach. In Backgound können Sie Default Alert/Banner anzeigen, aber im Vordergrund können Sie Alert/Banner nicht anzeigen, aber Sie können es mit UIAlertView verwalten.

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

Es funktioniert gut ... !!!