2015-11-02 4 views
6

Ich habe ein Szenario, in dem App Push-Benachrichtigung erhalten und diese Nachrichten auf dem Startbildschirm meiner App anzeigen muss, für die ich das Nachrichtenarray in Benutzerstandards gespeichert von meinem AppDelegate und alles funktioniert gut, aber es funktioniert nichtPush-Benachrichtigung Daten nicht erhalten, wenn App direkt durch Klicken auf App-Symbol gestartet

  1. wenn app in getötetem Zustand ist und eine Benachrichtigung kam und Benutzer triggeres die App über den App-icon (nicht von Push-Benachrichtigung)

  2. in folgenden Bedingungen
  3. Wenn die App im Hintergrund ist und eine Benachrichtigung eingeht und der Benutzer über das App-Symbol in die App gelangt (nicht f rom Push-Nachricht) in diesem Fall auch

Dann suchte ich nach Lösungen und kam über stille Push-Benachrichtigungen wissen (für die Hintergrund-Modus) und sonst nichts so muß ich wissen, wie alle Szenarien durch Push-Benachrichtigungen zu handhaben und mein appdelegete ist

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; 


    if (remoteNotif) { 

     [self handlePushMessage:remoteNotif]; 
    } 
    return YES; 
} 

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

    [self handlePushMessage:userInfo]; 

} 

-(void)handlePushMessage :(NSDictionary*)userInfo{ 

    //method to handle push message 
} 

Vielen Dank im Voraus

+0

Wenn Ihre App vom Benutzer beendet wird, dann gibt es keine Möglichkeit, über Push-Benachrichtigungen zu erfahren, wenn der Benutzer Ihre App aus dem App-Symbol – Paulw11

+2

ich denke, es besser Web-Dienste erstellen, die Ihnen Antwort gibt von allen Nachrichten, die bis jetzt.bcz gesendet wurden, kann das erste Szenario nicht behandelt werden, das zweite kann durch stumme Benachrichtigung gehandhabt werden. – Mukesh

+0

danke für die schnelle Antwort :) wenn die Benachrichtigung kam, bevor Benutzer die App zum ersten Mal gestartet dann was passiert? – AnshaD

Antwort

1

Dies ist ein häufiges Problem ist: wenn der Benutzer nicht Ihre Anwendung mittels der angezeigten Benachrichtigung öffnet, gibt es keine * Möglichkeit, die entsprechenden Informationen zu erhalten.

* Eine mögliche Lösung, die von vielen Apps verwendet wird, besteht darin, mit einem Remote-Server nach ungelesenen Benachrichtigungen zu suchen (z. B. nach einem nicht festgelegten Lesedatumsfeld zu suchen).

+0

Danke für die Antwort – AnshaD

2

in Szenario 1 NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; hier remoteNotif Rückkehr nil, wie Sie in der App über App-Symbol eingeben auszulösen.

In Szenario 2 können Sie erhalten Benachrichtigung Informationen über das folgende Verfahren schieben

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
     if (userInfo) { 

      [self handlePushMessage:userInfo]; 
     } 
} 
+0

danke für die Antwort, aber das ist nicht die Antwort, die ich suche :( – AnshaD

2
  1. wenn App ist in getötet Zustand und eine Benachrichtigung kam und Benutzer triggeres die App über den App-Icon (nicht von Push-Benachrichtigung)

    • Wenn die App in getötet Zustand ist dann die Push-Benachrichtigung Nutzlast kann nur an die App übergeben werden, wenn der Benutzer auf die Push-Benachrichtigung selbst tippt. Wenn der Benutzer die App von App-Icon startet dann wird die Benachrichtigung Nutzlast nicht an die Anwendung übergeben wird
  2. wenn App im Hintergrund ist und die Meldung kam und Benutzer gibt durch App-Icon App (nicht von Push-Nachricht) in in diesem Fall auch

    • Wenn Sie auf iOS7 und höher ausgerichtet sind, dann müssen Sie den Hintergrundmodus für Remote-Benachrichtigungen aktivieren. Überprüfen Sie bitte folgenden Link, um auch Benachrichtigung Nutzlast zu erhalten, wenn App im Hintergrund ist

    didReceiveRemoteNotification not working in the background

    Die oben erwähnte AppDelegate Methode wird aufgerufen, wenn die Anwendung im Vordergrund, Hintergrund und angehaltenen Zustand.

Es gibt keine Möglichkeit, die Benachrichtigung Nutzlast zu erhalten, wenn app getötet wird und wenn das App-Symbol direkt statt Push-Benachrichtigung in Notification Center geklickt.

0

Aktivieren Sie "Remote-Benachrichtigungen" im Hintergrund Modi in Funktionen in den Zieleinstellungen. Dadurch werden die Benachrichtigungsdaten auch dann abgerufen, wenn sich die App im Hintergrund befindet. Stellen Sie außerdem Folgendes sicher:

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

in Ihrem App-Delegaten.

Verwandte Themen