specific - porta azure
¿Cómo utilizar la plantilla de notificación push con varias propiedades personalizadas en Azure Notification Hub? (2)
Seguimos este tutorial: Cómo: buzones de notificación de Windows Azure (aplicaciones de Android) para Android.
Todo funciona bien cuando se estructura la carga de notificación como se describe en la guía. Es decir:
{
"data": {
"msg": "$(property1)"
}
}
Sin embargo, nos gustaría extender la plantilla para usar más de una propiedad personalizada en la carga útil. Algo como:
{
"data": {
"msg": {
"message": "$(property1)",
"sender": "$(property2)"
}
}
}
donde el back-end suministra los valores de la propiedad a través de:
Dictionary<string, string> templateValues = new Dictionary<string, string>
{
{ "property1", "Hello world" },
{ "property2", "foo" }
};
NotificationOutcome notificationOutcome = await Hub.SendTemplateNotificationAsync(templateValues, "test");
Al registrar la plantilla en el centro de notificación desde la aplicación móvil, recibimos el siguiente error:
"La carga útil de notificación suministrada no es válida"
- ¿Se pueden usar varias propiedades en la plantilla?
- ¿Deberíamos enviar el valor de la propiedad (desde el back-end) como una cadena JSON (u otra estructura) en su lugar? ¿Cuál es el enfoque preferido? Usaremos la plantilla en múltiples plataformas (iOS, Android)
Gracias por adelantado
La carga útil no es válida porque GCM no admite el objeto anidado en el miembro de datos. Puede enviar el mensaje con dos propiedades registrándose para la siguiente plantilla:
{
"data": {
"message": "$(property1)",
"sender": "$(property2)"
}
}
En su receptor Android, puede recuperar su propiedad con
intent.getStringExtra("property1");
En mis pruebas, puede agregar sus parámetros:
Modelo:
{
"data": {
"message": "$(property1)",
"args": "$(property2)",
"myargs": "$(property3)",
}
}
Datos:
{
"property1":"Jonh",
"property2":"1,1",
"property3":"0",
}
Resultados:
intent.Extras.GetString("message");
intent.Extras.GetString("args");
intent.Extras.GetString("myargs");