Azure push notificación hub – cómo manejar los formatos de carga útil para iOS y Android?
Estoy tratando de soportar plataformas iOS y Android a través de Azure Notification Hub.
La plataforma iOS espera la carga útil en la forma:
- Iniciar la aplicación sólo si no está en ejecución
- La notificación en curso en Android honeycomb tiene un comportamiento inconsistente
- Android: varias notificaciones como lista única en la barra de estado
- Android: actualización de la barra de progreso de la notificación, correctamente
- ¿Es una práctica común preguntar a los usuarios si desean recibir notificaciones push?
{"Aps": {"alert": "notificación de la notificación Hub de prueba"}}
Mientras que la plataforma Android espera que la carga útil en la forma:
{"Data": {"message": "Notification Hub test notification"}}
Soy consciente de que la carga útil puede ser modificada para incluir más información, pero el ejemplo es suficiente para la pregunta.
Teniendo en cuenta que enviar una notificación a un destino basado en una etiqueta y no mantener un registro de la plataforma que cada notificación push utiliza el registro es la única alternativa para enviar la notificación dos veces, una vez para la manzana nativa y la segunda para gcm nativo?
HubClient.SendAppleNativeNotificationAsync (carga útil, etiqueta); HubClient.SendGcmNativeNotificationAsync (carga útil, etiqueta);
¿O hay una manera de enviar una notificación a Azure Notification Hub con múltiples cargas y entonces el centro de notificación usará la carga útil apropiada para el dispositivo de destino?
- Notificación de Parse Push no enviando desde Android al Canal
- Mostrar icono pequeño en la barra de estado sin mostrar notificación
- ¿Cómo algunas aplicaciones bloquean / reemplazan notificaciones de heads-up?
- Determinar si la Actividad es llamada por una Notificación
- La notificación abre actividad, se pulsa el botón de retroceso, se abre la actividad principal?
- Programo una notificación local en un momento específico, utilizando el conmutador, pero su activación no a tiempo establecido
- Android La intención pendiente iniciada desde notificaion no sustituye a la última
- Android: guarda el sonido como tono de llamada y notificación
La solución que presenta es suficiente y es la mejor manera.
Si realmente desea evitar la llamada extra (de nuevo no hay necesidad de hacer las llamadas extra a la notificación hub).
- Cuando se registra el dispositivo también registrar una etiqueta de "tipo"
-
Consulte el concentrador de notificación para la etiqueta "tipo" y la otra etiqueta que desea enviar a
Para (registro reg en hubClient.getRegistrationsByTag (iosTag)) {hubClient.SendAppleNativeNotificationAsync (carga útil, etiqueta); }
Para (reg de registro en hubClient.getRegistrationsByTag (androidTag)) {hubClient.SendGcmNativeNotificationAsync (payload, tag); }
Es probable que tenga que cambiar a las notificaciones plantilla. Entendí que estos son 'independiente de la plataforma' y se puede analizar en el cliente en la aplicación específica.
Utilicé solamente los cubos de la notificación para la plataforma de Windows, así que podría ser incorrecto aquí, apenas quería dar una indirecta. http://www.microsoft.com/servicebus
Yo tuve el mismo problema. Primero traté de solucionarlo usando Notificaciones de plantillas pero tuve problemas importantes cuando quería tener una insignia correcta y una actualización de sonido en ios y android. Así que cambié de nuevo a las notificaciones nativas para iOS y Android. Mi solución final al problema es comprobar el tipo de NotificationDescription cuando envío la notificación. Utilizo un enumerador para obtener todas las etiquetas necesarias desde el centro de notificación y luego comprobar el tipo nativo y enviar la notificación basada en esto. Ejemplo de código:
if (typeof(AppleRegistrationDescription) == currentNotificationDescription.GetType()) { var jsonPayload = "{\"aps\" : { \"alert\" : \"" + message + "\", \"badge\" : " + badge + ", \"sound\" : \"default\" }, \"acme1\" : \"bar\", \"acme2\" : 42 }"; await _hubClient.SendAppleNativeNotificationAsync(jsonPayload, tag); } else if(typeof(GcmRegistrationDescription) == currentDesc.GetType()) { var jsonPayload = "{\"data\" : { \"message\" : \"" + message + "\", \"badge\" : " + badge + ", \"sound\" : \"default\" }, \"acme1\" : \"bar\", \"acme2\" : 42 }"; await _hubClient.SendGcmNativeNotificationAsync(jsonPayload, tag); }
- Android: Crear una sola tarea con actividades de varias aplicaciones (problema Lauchmode)
- Transmisión de audio en vivo con Android 2.x