2016-07-08 8 views
2

Ich habe eine iOS-App, wo ich Push mit Apns senden. Ich muss Push-Nachricht behandeln und wenn es korrekt ist, zeigen Sie die Nachricht. Wie kann ich es schnell erkennen? Dies ist mein Code:Wie mit Push-Benachrichtigung in Swift umgehen?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: 
    [NSObject: AnyObject]?) -> Bool { 
    registerForPushNotifications(application) 
    return true 
} 

func registerForPushNotifications(application: UIApplication) { 
    let notificationSettings = UIUserNotificationSettings(
     forTypes: [.Badge, .Sound, .Alert], categories: nil) 
    application.registerUserNotificationSettings(notificationSettings) 
} 

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) { 
    if notificationSettings.types != .None { 
     application.registerForRemoteNotifications() 
    } 
} 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    let tokenChars = UnsafePointer<CChar>(deviceToken.bytes) 
    var tokenString = "" 

    for i in 0..<deviceToken.length { 
     tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]]) 
    } 

    print("Device Token:", tokenString) 
} 

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
    print("Failed to register:", error) 
} 

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 



} 

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 

} 

func applicationDidBecomeActive(application: UIApplication) { 
    UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
} 

In welcher Funktion i Push-Benachrichtigung es umgehen kann?

+2

Sie können die Benachrichtigung in der Methode didReceiveRemoteNotification verarbeiten. Welches Problem haben Sie? –

+0

ich sende mit push userid und ich muss user id überprüfen, wenn es richtig ist userid ich muss zeigen, push, wenn es nicht ist, zeige ich nicht push –

+0

Sie können den Push in der oben genannten Methode und überprüfen Sie die Parameter im Wörterbuch erhalten. –

Antwort

13

Um Push-Benachrichtigungen zu behandeln, wenn Sie in Ihrer iOS-Anwendung angekommen sind, ist es ein heikler Teil, um alle Vorteile auszunutzen.

Wenn Push-Benachrichtigung eintrifft, kann Ihre Anwendung

geschlossenen Zustand sein - App getötet wird, Zustand Running - App in den Vordergrund ist, Zustand Suspended - App im Hintergrund ist,

Griff Push-Benachrichtigung, wenn

angekommen Läßt man Diskusse durch eine, wie man sie in jedem Zustand behandeln

Geschlossen Zustand:

wenn Anwendung geschlossen ist (eine andere App läuft oder Telefon gesperrt ist), Push-Benachrichtigung angekommen und tippten darauf die App öffnen. Die Steuerung wird appDelegate’s Methode d. H. didFinishLaunchingWithOptions: Bitte beachten Sie, dass, wenn Sie die App normalerweise durch Tippen auf das Symbol von Ihrem Telefon starten. didFinishLaunchingWithOptions: genannt zuerst mit seiner launchOptions == nil. Wenn Sie die App starten, indem Sie auf die Push-Benachrichtigungen klicken, wird didFinishLaunchingWithOptions: mit seiner launchOptions!=nil aufgerufen. Hier kommt der Punkt Wenn Sie etwas Besonderes, wenn Ihre Anwendung tun möchten Benachrichtigung Sie Code in Ihre didFinishLaunchingWithOptions hinzufügen müssen nach dem Klicken auf Push gestartet wird:

wie diese

if (launchOptions != nil) 
{ 
    //do some thing special e.g. display particular ViewController or Set some notification badge value. 
} 

Laufzustand

Wenn Ihre Anwendung ausgeführt wird (im Vordergrund) und die Push-Benachrichtigung empfangen wird, wird nichts mit dieser Benachrichtigung auf dem Bildschirm angezeigt - kein Alarm, keine Nachricht, kein Ton. Stattdessen wird folgende Methode von AppDelegate

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
} 

Sie aufgerufen werden kann diese Methode implementieren, nach Ihrem Bedarf, dass, wie Sie auf die Benachrichtigung reagieren soll.

Hängezustand

Wenn die Anwendung im Hintergrund ist (Telefon gesperrt ist oder eine andere App läuft) und Benachrichtigung Recieved drücken, Benachrichtigung mit Ton angezeigt wird und auf diese Benachrichtigung App klicken, wird mit gestartet werden folgende Methode von appDelegate heißt

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
} 

Es ist das gleiche, das aufgerufen wird, wenn die Benachrichtigung im Running-Zustand erhalten. Bitte beachten Sie, dass Sie bei dieser Methode immer feststellen können, ob Ihre App aus dem Hintergrundzustand geweckt wurde, indem Sie die Eigenschaft applicationState von UIApplication verwenden.In diesem Fall können Sie etwas Besonderes tun, wenn die Anwendung vom Hintergrund aus per Push-Benachrichtigung geöffnet wird.

+0

Können Sie bitte im Detail erklären? –

+0

@ beka.angsabay Downvote ist nicht der richtige Weg. –

+0

Ich habe nicht –

0

Wie pro Ihr Problem,

Sie nicht Toggle die Sichtbarkeit der Benachrichtigung, sobald es auf dem Gerät empfangen wurde.

Diese Art von Funktion ist nur unter Android möglich. Wie beim Empfang der Benachrichtigung können Android-Entwickler entscheiden, ob die Ansicht gerendert werden soll oder nicht.

Also versuchen Sie es von der Server-Seite zu steuern.