2017-04-21 14 views
0

ユーザーがUILocalNotificationをタップすると、特定の画面でアプリを起動しようとしています。ここに私のコードはAppDelegateである:iOS UILocalNotification特定の画面を起動する

// MARK: - Local Notification 
     func application(_ application: UIApplication, didReceive notification: UILocalNotification) 
     { 
      if (application.applicationState == UIApplicationState.active) 
      { 
       print("Active") 
      } 
      else if (application.applicationState == UIApplicationState.background) 
      { 
       print("Background") 
      } 
      else if (application.applicationState == UIApplicationState.inactive) 
      { 
       print("Inactive") 
       print(notification.userInfo as Any) 
       self.redirectToPage(userInfo: notification.userInfo as! [String : String]) 
      } 
     } 

     func redirectToPage(userInfo: [String : String]!) 
     { 
      if userInfo != nil 
      { 
       if let pageType = userInfo["TYPE"] 
       { 
        if pageType == "Page1" 
        { 
         let storyboard = UIStoryboard(name: "Main", bundle: nil) 
         self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "promoVC") 
        } 
       } 
      } 
     } 

アプリがバックグラウンドまたは非アクティブ状態にあるが、それが中断されたときに、UILocalNotificationをタップすると、デフォルト画面でアプリを起動したときにそれが正常に動作します。一時停止状態のときに特定の画面でアプリを起動するにはどうすればよいですか?

+0

アプリが停止すると、通知は 'didFinishLaunchingWithOptions'メソッドによってキャッチされています。 – ridvankucuk

答えて

1

中断したアプリの通知は、例えば

に来るところだとあまりにもdidFinishLaunchingに全部を行います

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]?) -> Bool { 
     //allow notifs 
     let types : UIUserNotificationType = [.alert] 
     let settings = UIUserNotificationSettings(types: types, categories: nil) 
     application.registerUserNotificationSettings(settings) 

     //forward notif, if any 
     if let note = launchOptions?[UIApplicationLaunchOptionsKey.localNotification] as? UILocalNotification { 
      handleNotification(note: note, fromLaunch: true) 
     } 
} 

func application(_ application: UIApplication, didReceive note: UILocalNotification) { 
      handleNotification(note: note, fromLaunch: false) 
} 

func handleNotification(note:UILocalNotification, launch:Bool) { 
     if (application.applicationState == UIApplicationState.active) 
     { 
      print("Active") 
     } 
     else if (application.applicationState == UIApplicationState.background) 
     { 
      print("Background") 
     } 
     else if (application.applicationState == UIApplicationState.inactive) 
     { 
      print("Inactive") 
      print(notification.userInfo as Any) 
      self.redirectToPage(userInfo: notification.userInfo as! [String : String]) 
     } 
     else { 
      print("other ;)") 
      print(notification.userInfo as Any) 
      self.redirectToPage(userInfo: notification.userInfo as! [String : String]) 
     } 

    } 
+0

ありがとう、それは動作します! – BadCodeDeveloper

関連する問題