2016-03-01 31 views
2

我有一個與oneSignal作爲推送提供商的應用程序。我可以收到推送通知,這很好。但是,如果我嘗試訪問推送有效負載,則不會調用didReceiveRemoteNotificationSwift didReceiveRemoteNotification不叫

我有下面的代碼

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

if application.applicationState != UIApplicationState.Background { 

     let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus") 
     let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:") 
     var pushPayload = false 
     if let options = launchOptions { 
      pushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil 
     } 

    } 
    if application.respondsToSelector("registerUserNotificationSettings:") { 
     let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
     application.registerUserNotificationSettings(settings) 
     application.registerForRemoteNotifications() 
    } else { 
     let types : UIRemoteNotificationType = [.Badge, .Alert, .Sound] 
     application.registerForRemoteNotificationTypes(types) 
    } 

} 

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

    if userInfo["d"] as! String == "t" { 

     print("key was received") 

    } 
    print(userInfo) 
    print("PREVED") 

} 

問題是,沒有打印出來,當我收到推送。我究竟做錯了什麼 ?

+0

委託方法被調用或不' –

+0

委託方法不叫 –

回答

3

在這個地方嘗試,一旦你delegete方法

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

調用這個曾經

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 

    print("Recived: \(userInfo)") 

    completionHandler(.NewData) 

} 
+0

工作!謝謝! –

+0

歡迎兄弟.... –

0

嘿@Alexey確保您APP提供文件的推送通知服務啓用

0

將此代碼用於Swift 3.0

//MARK: Push notification receive delegates 

    func application(_ application: UIApplication, 
           didReceiveRemoteNotification userInfo: [AnyHashable : Any], 
           fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 
    { 

     print("Recived: \(userInfo)") 

     completionHandler(.newData) 

    } 
相關問題