2017-01-13 55 views
6

OneSignal belgelerini kontrol ettim, ancak kullanıcı, bildirim ile etkileşimde bulunulduğunda karar vermek ve yeniden yönlendirmek için Swift'i kullanarak iOS Native SDK'da bir ek bildirim olarak (postID, kullanıcı kimliği, tür) ek sözlük olarak sözlüğün nasıl ayarlanacağını acemi olarak anlayamadım. Ben sadece böyle yapıyorum gönderme içinOne Signal bildiriminin ek verilerini nasıl gönderiyor ve alıyorsunuz?

:

OneSignal.sendTag("username", value: "\(user)") 
OneSignal.postNotification(["contents": ["en": "@\(user) added an additive to your '\(title)' experience: \"\(strLast)\""], 
                   "include_player_ids": [postOwnerPlayerID], 

alıcı için:

OneSignal.initWithLaunchOptions(launchOptions, appId: "______", handleNotificationReceived: nil, handleNotificationAction: { 
     (result) in 

     // This block gets called when the user reacts to a notification received 
     let payload = result?.notification.payload 

     //Try to fetch the action selected 
     if let additionalData = payload?.additionalData { 

      print("payload") 
      print(additionalData) 
     } 

     // After deciding which action then I can redirect user.. 

     let username: String? = UserDefaults.standard.string(forKey: KEY_UID) 

     if username != nil { 

      if let tabbarController = self.window!.rootViewController as? UITabBarController { 
       tabbarController.selectedViewController = tabbarController.viewControllers?[2] 
       // NotificationCenter.default.post(name: Foundation.Notification.Name(rawValue: "notificationsUp"), object: nil) 
      } 
     } 

    }, settings: [kOSSettingsKeyInFocusDisplayOption : OSNotificationDisplayType.none.rawValue]) 

cevap

6

Sen aşağıdaki gibi OneSignal.postNotification geçirilen sözlükten bir anahtar olarak data alanını ayarlayın.

OneSignal.postNotification(["contents": ["en": "Test Message"], 
          "include_player_ids": ["3009e210-3166-11e5-bc1b-db44eb02b120"], 
          "data": ["postID": "id"]]) 

Sonra handleNotificationAction işlevinde payload den additionalData adresinin anahtarları hazır almak gerekir. objc ek veri göndermek için iOS

if let additionalData = payload?.additionalData { 
    let postID: String? = additionalData["postID"] 
} 
+0

teşekkürler! – sputn1k

4

Örnek ...

[OneSignal postNotification:@{@"contents":@{@"en":text}, 
           @"include_player_ids":oneSignalIds, 
           @"data":@{@"key": @"value"}, 
           }]; 

Ve verileri almak için ...

[OneSignal initWithLaunchOptions:launchOptions 
          appId:ONESIGNAL_APPID 
     handleNotificationReceived:^(OSNotification *notification) { 

      if (notification.payload.additionalData) { 

       NSDictionary* additionalData = notification.payload.additionalData; 

       if (additionalData[@"key"]){ 
        NSLog(@"Received Data - %@", additionalData[@"key"]); 
       } 
      } 
     } 

     handleNotificationAction:nil 
         settings:@{kOSSettingsKeyInAppAlerts:@YES}]; 

birisi

0
:) yardımcı olur Umut

@jkasten bana doğru yönde yardım etti! Başlarken AnyHashable uyarı kurtulmak yardımcı oldu.

Swift 3 kod (additionalData parametresine değişiklik YOLU gönderilmek istenen): bana yardımcı

let PATH = notification!.payload.additionalData["PATH"] 
print("PATH: ",PATH as Any)