ver suenan recuperar pantalla notificaciones las historial funciona como centro borradas bloqueada ios push-notification ios7

suenan - La notificación silenciosa de inserción en iOS 7 no funciona



recuperar notificaciones iphone (11)

En la presentación de WWDC 2013 "Novedades con la multitarea", hay una sección sobre notificaciones automáticas silenciosas. Parece sencillo. De acuerdo con la presentación, si envía la carga útil de APS con solo el conjunto de contenido disponible a 1, los usuarios no serán notificados de la notificación.

// A. This doesn''t work { aps: { content-available: 1 } }

Mi prueba muestra que esto no funciona, ya que no se recibe ningún empuje. Pero si incluyo el atributo de sonido pero excluyo el atributo de alerta, funciona (aunque ya no está en silencio).

// B. This works { aps: { content-available: 1, sound: "default" } }

Sin embargo, si cambio el atributo de sonido para reproducir un audio silencioso, puedo imitar un impulso silencioso.

// C. This works too. { aps: { content-available: 1, sound: "silence.wav" } }

Alguien sabe:

  1. Si esto es un error?
  2. Y si es correcto suponer que B o C se está tratando como una notificación remota (y no un error con Silent Push donde se necesita un atributo de sonido)? Si es así, esto significa que no tiene un límite de velocidad como Silent Pushes son ... lo que Apple probablemente arreglará. Entonces probablemente no debería confiar en eso.
  3. ¿Cuál es el límite de velocidad (N empuja cada X segundos, etc.)?

Gracias por adelantado.

Editar con más información

Para A, el estado de la aplicación no importa. La notificación nunca se recibe.

Parece que B y C solo funcionan si encierra los atributos y valores entre comillas, como se muestra a continuación.

{"aps":{"content-available": 1, "sound":"silent.wav"}}

Y la notificación llega a la aplicación: didReceiveRemoteNotification: fetchCompletionHandler: independientemente del estado.


Argh! También tirando de mi pelo, esto no es tanto una respuesta como otro ejemplo de una carga que NO funciona. El método didReceiveRemoteNotification nunca se llama, aunque si el dispositivo está inactivo, se muestra el texto de alerta.

{"aps": { "alert":"alert!", "sound":"default", "content-available" : 1}, "content-id":21482, "apt":"1" }

"apt" es un campo personalizado que usamos para indicar el tipo de notificación.


Así que me encontré con este problema ayer, y después de intentar enviar una carga con un conjunto de sonidos a una cadena vacía, todavía estaba causando vibración / sonido en el dispositivo. Eventualmente, tropecé con una publicación de blog de Urban Airship que sugería la necesidad de enviar:

{ priority: 5 }

en la notificación de inserción, que nunca había visto. Después de leer detenidamente los documentos de Apple para las notificaciones automáticas, tropecé con esta página:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html

Lo que indica que la prioridad debe establecerse como "5" o "10", y explica:

La prioridad de la notificación Proporcione uno de los siguientes valores:

10 El mensaje de inserción se envía inmediatamente.

La notificación de inserción debe activar una alerta, sonido o insignia en el dispositivo. Es un error utilizar esta prioridad para una inserción que contiene solo la clave de contenido disponible.

5 El mensaje de inserción se envía a la vez que conserva energía en el dispositivo que lo recibe.

En última instancia, pudimos obtener notificaciones automáticas silenciosas que funcionaban con un recuento de distintivos (y sospecho que podría hacer lo mismo con una alerta) con el siguiente formato:

aps = { badge = 7; "content-available" = 1; priority = 5; };


Configurar ''sonido'' a 0 me funcionó ... :)


Esto funciona para mí:

{ aps: { content-available: 1 } }

Fíjese si Background fetch casilla de verificación Background fetch en Project Capabilities > Background Modes


Esto también funciona y no reproduce un sonido cuando llega:

{ aps = { "content-available" : 1, sound : "" }; }

EDITAR

Las personas que tengan este problema pueden querer consultar este enlace . He estado participando en un hilo en el foro de desarrolladores de Apple que abarca todos los estados de la aplicación y cuando se reciben y no se reciben silenciosamente.


Estoy viendo el mismo problema Si envío un push con "contenido disponible": 1 y no hay otros atributos configurados, la notificación nunca se recibe. Cuando agrego otros atributos, funciona perfectamente.

Como trabajo temporal, agrego el atributo de insignia, ya que no alerta al usuario de ninguna manera aparte de agregar la insignia al ícono.

Avíseme si ha encontrado una mejor solución.


Intenté establecer una cadena vacía como atributo de alerta y también funcionó:

{ aps = { "content-available" = 1; "alert" = ""; }; }

Parece que APNS está comprobando la existencia de estos atributos con el fin de validar la carga útil push. Curiosamente, no están verificando el contenido real. Aunque parece un poco hacky ...


La prioridad debe establecerse como un elemento en el flujo binario pero no en la cadena de caracteres json. Aparentemente, solo el último tipo de formato 2 se puede usar para establecer la prioridad de la siguiente manera:

$token = chr(1) . pack(''n'', 32) . pack(''H*'', $deviceToken); $payload = chr(2) . pack(''n'', strlen($json)) . $json; $identifier = chr(3) . pack(''n'', 4) . pack(''N'', $notification); $expiration = chr(4) . pack(''n'', 4) . pack(''N'', time()+86400); $priority = chr(5) . pack(''n'', 1) . chr($priority); $frame_data = $token.$payload.$identifier.$expiration.$priority; $frame_length = strlen(bin2hex($frame_data))/2; $msg = chr(2) . pack(''N'', $frame_length) . $frame_data;

Tipos de formato (primer byte) para mensajes binarios de notificaciones remotas:

0 - simple (antiguo) 1 - mejorado (antiguo) 2 - más reciente con más parámetros (nuevo)


Tuvimos el mismo problema sin recibir ninguna notificación. En nuestro caso, usamos un comando silencioso para actualizar el número de placa. Cuando establecemos cadenas vacías para la alerta (cuerpo y título) y el sonido, funcionaría, pero si alguna de las claves no estaba presente, falló. Esto es lo que funcionó, actualizando la insignia sin sonido o alerta (registro del diccionario de usuario resultante en didReceiveRemoteNotification)

{ aps = { alert = { body = ""; title = ""; }; badge = 103; "content-available" = 1; sound = ""; }; }


Uso la herramienta: Knuff envía mi notificación de inserción a mi dispositivo.

Parece que:

Entonces, probé este ejemplo.

¡Todos trabajan! ¡Pero debes establecer la prioridad 10!

Entonces, si no usa la herramienta, también la anota.

ejemplos:

  • sin alerta, sin sonido

{ "aps":{ "content-available":1, } }

  • solo alerta

{ "aps":{ "content-available":1, "alert":"" } }

  • solo sonido

{ "aps":{ "content-available":1, "sound":"" } }


establecer la prioridad en 5 no me funcionó, pero establecer el sonido o la alerta en una cadena vacía causó que la notificación se manejara como de alta prioridad