¿Cómo enviar algunos datos adicionales al enviar notificaciones push usando OneSignal?

Estoy desarrollando una aplicación de Android, así como la escritura de un C # Web Api para él. Ahora puedo enviar notificaciones push usando el código de abajo. Pero tengo que enviar un objeto json que contenga una url para una imagen para que cuando el usuario haga clic en la notificación, una actividad en la aplicación se abre y con esa url carga la imagen con Picasso. ¿Cómo debo hacerlo?

private void SendPushNotifications(int userId) { string appId = "myAppId"; var request = WebRequest.Create("https://onesignal.com/api/v1/notifications") as HttpWebRequest; var user = db.Users.FirstOrDefault(x => x.Id == userId); if (user != null) { string message = "This job is posted by: \n" + user.Name + "\n" + user.Contact + "\n" +user.City; if (request != null) { request.KeepAlive = true; request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("authorization", "Basic "+appId); byte[] byteArray = Encoding.UTF8.GetBytes("{" + "\"app_id\": \"app_id\"," + "\"contents\": {\"en\": \""+ message +"\"}," + "\"included_segments\": [\"All\"]}"); string responseContent = null; try { using (var writer = request.GetRequestStream()) { writer.Write(byteArray, 0, byteArray.Length); } using (var response = request.GetResponse() as HttpWebResponse) { using (var reader = new StreamReader(response.GetResponseStream())) { responseContent = reader.ReadToEnd(); } } } catch (WebException ex) { System.Diagnostics.Debug.WriteLine(ex.Message); System.Diagnostics.Debug.WriteLine(new StreamReader(ex.Response.GetResponseStream()).ReadToEnd()); } if (responseContent != null) System.Diagnostics.Debug.WriteLine(responseContent); } } } 

Con esta cadena de "mensaje" también quiero enviar un objeto json.

Edición + Solución: OneSignal permite enviar datos adicionales mediante la etiqueta 'data' en la cadena codificada que envío como a continuación:

 byte[] byteArray = Encoding.UTF8.GetBytes("{" + "\"app_id\": \"app_id\"," + "\"data\": {\"foo\": \"bear\"}," + "\"contents\": {\"en\": \"" + message + "\"}," + "\"included_segments\": [\"All\"]}"); 

Así que en Android será mapeado en JsonObject additionalData

 OneSignal.startInit(this) .setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() { @Override public void notificationOpened(String message, JSONObject additionalData, boolean isActive) { Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show(); } }) .init(); 

Y usted puede utilizarlo fácilmente. 🙂

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.