1

Ich kann Push-Benachrichtigungen an mein IOS-Gerät senden. Aber wenn ich auf diese Benachrichtigung klicke, öffnet sich einfach die App. In der App wird keine Nachricht angezeigt.Handhabung Push-Benachrichtigungen, wenn App nicht läuft (d. H. Totally Getötet)

-Code von mir verwendet:

if (application.applicationState == UIApplicationStateActive) { 

    NSString *cancelTitle = @"Close"; 

    NSString *showTitle = @"Show"; 

    NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"]; 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Some title" 

                 message:message 

                 delegate:self 

               cancelButtonTitle:cancelTitle 

               otherButtonTitles:showTitle, nil]; 

    [alertView show]; 

    [alertView release]; 

} else { 

    //Do stuff that you would do if the application was not active 

} 

aber nicht in der Lage meine Botschaft mit Hilfe von oben Code zu erhalten. Der obige Code funktioniert nur, wenn meine App geöffnet ist und sich im Vordergrund befindet. Nur dieser Alarm wird nicht angezeigt.

Bitte helfen.

Danke.

+0

Der Code, den Sie nicht notification.The Code, den Sie nur noch im Zusammenhang haben drücken zeigt einen Alarm anzeigen, wenn die App aktiv ist. Was versuchst du zu machen ? –

+0

Ich erhalte Push-Benachrichtigungen auf meinem IOS-Gerät. Ich möchte nur, wenn ich auf diese Push-Nachricht klicke, dann sollte es meine App öffnen und diese Nachricht für den Benutzer anzeigen. Wäre glücklich, wenn Sie ausführlich mit dem richtigen Code führen. @Teja Nandamuri –

Antwort

-2

Der beste Weg, um mit solchen Dingen umzugehen, ist die Verwendung von Deep Linking in Ihrem APN. Dadurch können Sie Daten einbetten, die dann in Ihrer App verarbeitet werden und den Benutzer zu einem bestimmten Ereignis weiterleiten.

Andernfalls können Sie die Methode ApplicationDidEnterForeground nur von Ihrem App-Delegaten verwenden. Setzen Sie einfach Ihren AlertView-Code dort und wann immer Ihre Anwendung in den Vordergrund gebracht wird, die ausgeführt wird.

+0

Könnten Sie bitte eine detaillierte Lösung mit Code @TheValyreanGroup bieten –

+0

Hier ist eine sehr gute schreiben Sie auf, wie es geht. Sie müssen 3 Dinge ... 1-Custom URL-Schema 2-Deep Link innerhalb APN 3-Code, um die tiefen Verbindung von der APN zu handhaben https://blog.mixpanel.com/2015/04/21/ guide-setting-up-deep-linking-in-ios-und-android/ – TheValyreanGroup

+0

Schätzen Sie Ihre Hilfe, aber das Tutorial gibt Wissen, wie man bestimmte Bildschirm für Push-Benachrichtigungen mit Deep-Linking öffnen. Aber ich möchte meine Push-Benachrichtigung nur auf dem Startbildschirm zeigen. @TheValyreanGroup –

1

Von der Apple-Dokumentation

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/Introduction.html

„Wenn Ihre App eine Benachrichtigung gestartet werden muss, UIKit die UIApplicationLaunchOptionsLocalNotificationKey oder UIApplicationLaunchOptionsRemoteNotificationKey Schlüssel im bestanden-Dictionaries Optionen Start beinhaltet Ihre App Delegate Anwendung: willFinishLaunchingWithOptions: und Anwendung: didFinishLaunchingWithOptio ns: Methoden. Das Vorhandensein von dieser Tasten lässt Sie wissen, dass Benachrichtigungsdaten auf behandelt werden und gibt Ihnen die Möglichkeit, die Schnittstelle Ihrer App entsprechend zu konfigurieren. Sie müssen die Benachrichtigung in diesen Methoden jedoch nicht verarbeiten. Nachdem Ihre App ausgeführt wird, ruft UIKit andere Methoden Ihres App-Delegaten, z. B. die Anwendung: didReceiveLocalNotification: Methode, um Ihnen eine Möglichkeit zur Verarbeitung der Benachrichtigungsdaten. Welche Methoden werden als , auf dem Methoden ab, die Sie implementiert und ob der Benutzer mit dem System UI für die Nachricht interagierten.“

So überprüfen Sie, ob Ihre App aufgrund einer Benachrichtigung gestartet wurde und wenn ja, den Dialog angezeigt

0

Ich denke, es gibt eine einfache Lösung.

  1. Sie eine Flagge einmal in der App speichern können, wenn Sie Benachrichtigung erhalten, können Sie überprüfen, wie es auf der Sie here
  2. Nachdem das tun, erkennen müssen, wenn Sie von Hintergrund kommen vielleicht wie here

Wenn Sie die Warnung nur zeigen wollen, wenn Sie die Anwendung aus der Meldung öffnen dann vielleicht haben Sie dies Ihre solution

+0

50% Ich habe eine Lösung. Verwendete diesen Code: else if (Anwendung.applicationState == UIApplicationStateInactive) { // App wechselt vom Hintergrund in den Vordergrund (Benutzer tippt Benachrichtigung), tun, was Sie brauchen, wenn Benutzer hier tippt } Aber wenn ich für UiapplicationStateBackground verwende, funktioniert es nicht für mich. @ m1sh0 –

1

Umgang mit Push-Benachrichtigungen, wenn App nicht ausgeführt wird (oder vollständig getötet wurde)

Ich poste diese Lösung, wie es für mich arbeitete.

Wechseln Sie zu Ihrer AppDelegate.m-Datei.

Schritt 1: schreiben Dieser Code in dieser Funktion:

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

    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

if (localNotif) { 

     NSString *cancelTitle = @"Close"; 
     NSString *showTitle = @"OK"; 
     NSString *message = [[localNotif valueForKey:@"aps"] valueForKey:@"alert"]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message Received" 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 


    } 

} 

Schritt 2:

Insert Dieser vollständige Code:

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

NSLog(@"%s..userInfo=%@",__FUNCTION__,userInfo); 

/** 
    * Dump your code here according to your requirement after receiving push 
    */ 

    if (application.applicationState == UIApplicationStateActive) { 
     NSString *cancelTitle = @"Close"; 
     NSString *showTitle = @"OK"; 
     NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message Received" 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 

    } 

    else if(application.applicationState == UIApplicationStateBackground){ 

     //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here 


     NSString *cancelTitle = @"Close"; 
     NSString *showTitle = @"OK"; 
     NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message Received" 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 

    } 


    else if(application.applicationState == UIApplicationStateInactive){ 

     //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here 


     NSString *cancelTitle = @"Close"; 
     NSString *showTitle = @"OK"; 
     NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message Received" 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 

    } 


} 

Dieser ganze Code funktioniert, ob App ist Aktiv, Inaktiv oder Totally Getötet. Es gibt Ihnen AlertView für Push-Nachrichten.

1

Wenn Anwendung völlig get Benachrichtigungscode

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
if (launchOptions != nil) 
{ 
    //opened from a push notification when the app is closed 
    NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
    if (userInfo != nil) 
    { 
     NSLog(@"userInfo->%@",[userInfo objectForKey:@"aps"]); 
     //write you push handle code here 

    } 

} 
} 

Weitere gehen über diesen Link getötet wird: Handling Push Notifications when App is Terminated