2016-05-23 21 views
0

Ich beende bereits die Implementierung der lokalen Benachrichtigung in meiner App.Lokale Benachrichtigung wird gepushed, aber App öffnet nicht

Wenn das Telefon im Standby-Modus ist (schwarzer Bildschirm, aber nicht geschlossen), sehe ich die lokale Benachrichtigung, ich könnte wischen und ich habe zwei Tasten (Accept & Ablehnen).

Das Problem: Wenn ich auf Akzeptieren klicke, kann ich auf dem Debug sehen, dass die Funktion mit Drucken ("babam!") Ausgelöst wird, aber die App bleibt geschlossen. Normalerweise sollte die App öffnen! Ich bleibe auf dem Bildschirm, wo ich zum Entsperren wischen und mein Passwort geben muss. Vielleicht, weil ich freischalten muss ... aber es scheint komisch.

Sie könnten überprüfen, wie ich meine lokale Benachrichtigung deklariere. Aber es scheint richtig mit

declineAction.authenticationRequired = false 

So wird jede Hilfe geschätzt werden!

let acceptAction = UIMutableUserNotificationAction() 
     acceptAction.identifier = "Accept" 
     acceptAction.title = "Accept" 
     acceptAction.activationMode = UIUserNotificationActivationMode.Background 
     acceptAction.destructive = false 
     acceptAction.authenticationRequired = false 

     let declineAction = UIMutableUserNotificationAction() 
     declineAction.identifier = "Decline" 
     declineAction.title = "Decline" 
     declineAction.activationMode = UIUserNotificationActivationMode.Background 
     declineAction.destructive = false 
     declineAction.authenticationRequired = false 


     let category = UIMutableUserNotificationCategory() 
     category.identifier = "invite" 
     category.setActions([acceptAction, declineAction], forContext: UIUserNotificationActionContext.Default) 
     let categories = NSSet(array: [category]) 

     let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: categories as? Set<UIUserNotificationCategory>) 
     UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings) 

Gerade unter func, die ausgelöst wird, wenn ich wählen "accept"

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler:() -> Void) { 
     NSLog("Handle identifier : \(identifier)") 
     // Must be called when finished 
     if identifier == "Accept"{ 
     print("babam!!!") 


      var storyboard = UIStoryboard(name: "Main", bundle: nil) 

      var destinationController = storyboard.instantiateViewControllerWithIdentifier("gosondage1") as? Sondage 

      var frontNavigationController = UINavigationController(rootViewController: destinationController!) 

      var rearViewController = storyboard.instantiateViewControllerWithIdentifier("MenuController") as? MenuController 

      var mainRevealController = SWRevealViewController() 

      mainRevealController.rearViewController = rearViewController 
      mainRevealController.frontViewController = frontNavigationController 
      self.window!.rootViewController = mainRevealController 
      self.window?.makeKeyAndVisible() 


      } 
     completionHandler() 
    } 

Antwort

0

Sie sollten den Wert activa acceptAction.activationMode = UIUserNotificationActivationMode.Background-acceptAction.activationMode = UIUserNotificationActivationModeForeground

In Ihrem Fall ändern;

acceptAction = UIMutableUserNotificationAction() 
     acceptAction.identifier = "Accept" 
     acceptAction.title = "Accept" 
     acceptAction.activationMode = UIUserNotificationActivationModeForeground 
     acceptAction.destructive = false 
     acceptAction.authenticationRequired = false 

     let declineAction = UIMutableUserNotificationAction() 
     declineAction.identifier = "Decline" 
     declineAction.title = "Decline" 
     declineAction.activationMode = UIUserNotificationActivationMode.Background 
     declineAction.destructive = false 
     declineAction.authenticationRequired = false 

für weitere Informationen; https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIUserNotificationAction_class/

+0

Ja, danke, es funktioniert. In welchen Fällen müssen wir. Hintergrund statt Vordergrund verwenden? – user2971617

+0

Ich weiß nicht, es hängt von Ihrer App Bedürfnisse ab. Zum Beispiel sendet E-Mail-App Push-Benachrichtigungen oder WhatsApp, wenn Sie eine neue Nachricht oder E-Mail erhalten und wenn Sie möchten, können Sie die App über die Schaltfläche lesen (.foreground) öffnen oder Sie können die Nachricht mit Abbrechen Schaltfläche (.background) ignorieren Deine Bedürfnisse. – emresancaktar