为什么不能处理APNS推送通知和本地通知?
我正在推送通知和本地通知,但在前台通知工作正常,但当终止应用程序在这种情况下,我不能重定向特定的观点时,点击通知。为什么不能处理APNS推送通知和本地通知?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {      // Check if launched from notification 
     // 1 
     if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] { 
      // 2 
      let aps = notification["aps"] as! [String: AnyObject] 
      //Redirect to notification view 
      handlePushMessage(aps) 
     }else if let notification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? [String: AnyObject] { 
      // 2 
      self.postData = notification["aps"] as! [String: AnyObject] 
      //Redirect to notification view 
      didTapNotification() 
     }else{ 
      //Session 
      //Redirect to Main view 
      checkUserSession() 
     } 
    return true 
} 
我当面向应用程式无效此面临着来自APNS通知和本地通知这个问题,或者terminate.Please帮我来回找到解决方案。
回答:
最后我得到的解决方案管理APNS推送通知和本地通知,其现在工作的罚款。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 
    //Register here For Notification 
    if #available(iOS 9, *) { 
     let notificationTypes: UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] 
     let pushNotificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 
     application.registerUserNotificationSettings(pushNotificationSettings) 
     application.registerForRemoteNotifications() 
    }else{ 
     UIApplication.sharedApplication().registerUserNotificationSettings(
      UIUserNotificationSettings(forTypes: .Alert, categories: nil)) 
     application.registerForRemoteNotifications() 
    } 
dispatch_async(dispatch_get_main_queue()) { 
     // Check if launched from notification 
     // 1 
     if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] { 
      // 2 
      let aps = notification["aps"] as! [String: AnyObject] 
      handlePushMessage(aps) 
     }else if let notification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification { 
      // 2 
      self.postData = notification.userInfo as! [String: AnyObject] 
      didTapNotification() 
     }else{ 
      //Session 
      checkUserSession() 
     } 
     } 
} 
回答:
您如何在didReceiveRemoteNotification函数中尝试?
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {     if(application.applicationState == UIApplicationStateBackground){ 
    }else if(application.applicationState == UIApplicationStateInactive){ 
    } 
} 
回答:
试试这个代码,你可以根据你的要求进行修改。如果你有任何理解这个逻辑的问题,请告诉我。使用completionHandler的didReceiveRemoteNotification可以在后台和前台运行。不要忘记在plist中做适当的更改以支持后台获取和后台通知。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {     // Override point for customization after application launch. 
    application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum) 
    if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] { 
     notificationDataDict = notification; 
    } 
    return true 
} 
func handleRemoteNotificationWithUserInfo(application:UIApplication, userInfo:NSDictionary){ 
} 
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 
    print(userInfo) 
    if application.applicationState != .Inactive{ 
     notificationDataDict = userInfo; 
     if let navigationController = self.window?.rootViewController as? UINavigationController{ 
      if application.applicationState == .Active{ 
       if application.backgroundRefreshStatus == .Available{ 
        completionHandler(.NewData) 
        self.handleRemoteNotificationWithUserInfo(application, userInfo: userInfo) 
       } 
       else 
       { 
        completionHandler(.NoData) 
       } 
      } 
      else{ 
       completionHandler(.NewData) 
       self.handleRemoteNotificationWithUserInfo(application, userInfo: userInfo) 
      } 
     } 
    } 
} 
以上是 为什么不能处理APNS推送通知和本地通知? 的全部内容, 来源链接: utcz.com/qa/261113.html

