signal open one notification ios swift push-notification onesignal

ios - open - ¿Cómo publicar los datos adicionales de la notificación One Signal y recibirlos?



push notifications service (3)

Establece el campo de data como una clave en el diccionario pasado a OneSignal.postNotification como el siguiente.

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

Luego debe preparar sus llaves de additionalData de la payload en la función handleNotificationAction .

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

Comprobé la documentación de OneSignal pero no pude entender claramente como principiante cómo configurar el diccionario como datos adicionales de una notificación posterior (como postID, ID de usuario, tipo) en iOS SDK nativo usando Swift para decidir y redirigir cuando el usuario interactuó con la notificación.

Para publicar solo estoy haciendo eso:

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

Para recibir:

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])


Ejemplo de iOS en objC para enviar datos adicionales ...

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

Y para recibir los datos ...

[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}];

Espero que ayude a alguien :)


¡Gracias a @jkasten me ayudó en la dirección correcta! me ayudó a deshacerme de la advertencia de AnyHashable que estaba recibiendo.

Código de Swift 3 (cambie la RUTA al parámetro adicionalData que desea mostrar):

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