¿Cuál es la longitud máxima de un texto de alerta de notificación push?

Respuestas:

245

Los límites reales para el texto de alerta no están documentados en ninguna parte. Lo único que dice la documentación es:

En iOS 8 y versiones posteriores, el tamaño máximo permitido para una carga de notificación es de 2 kilobytes; Apple Push Notification Service rechaza cualquier notificación que exceda este límite. (Antes de iOS 8 y en OS X, el tamaño máximo de carga útil es de 256 bytes).

Esto es lo que pude encontrar haciendo algunos experimentos.

  • Alertas: antes de iOS 7, el límite de visualización de alertas era de 107 caracteres. Los mensajes más grandes se truncaron y obtendría un "..." al final del mensaje que se muestra. Con iOS 7, el límite parece aumentar a 235 caracteres. Si pasa más de 8 líneas, su mensaje también se truncará.
  • Pancartas: las pancartas se truncan alrededor de 62 caracteres o 2 líneas.
  • Centro de notificaciones: los mensajes en el centro de notificaciones se truncan alrededor de 110 caracteres o 4 líneas.
  • Pantalla de bloqueo: igual que un centro de notificaciones.

Solo como recordatorio aquí hay una muy buena nota de la documentación oficial:

Si es necesario, iOS trunca su mensaje para que se ajuste bien en cada estilo de entrega de notificaciones; Para obtener mejores resultados, no debe truncar su mensaje.

ascandroli
fuente
8
Debe aclararse que un UIAlertView en la aplicación no tiene límite de visualización; el texto sobre una longitud determinada irá a una vista de desplazamiento. Sin embargo, un SMS o alerta de inserción probablemente tenga ese límite de 107 caracteres.
azdev
1
Y el texto mostrado no está limitado por la carga útil, porque cuando usa el método de localización ya no coincide con 1: 1. La carga útil puede ser corta, mientras que el mensaje final puede ser mucho más largo. La pregunta es sobre mostrar el mensaje que no está estrictamente relacionado con la longitud máxima de la carga útil.
Marcin
1
Podría enviar una carga útil enorme al sandbox y se entregaría, pero el servidor de producción era muy restrictivo a solo 256 bytes y no un byte más.
DoctorDbx
¿Alguien puede decirle al GCM Android push notif longitud del texto de la pantalla?
harikrishnan
1
1. Para las notificaciones de Voz sobre Protocolo de Internet (VoIP), el tamaño máximo de carga útil es de 5 KB (5120 bytes). 2. Para todas las demás notificaciones remotas, el tamaño máximo de carga útil es de 4 KB (4096 bytes).
vikram
26

Debe ser de 236 bytes. Hasta donde yo sé, no hay restricciones en cuanto al tamaño del texto de alerta, sino solo el tamaño total de la carga útil. Por lo tanto, si la carga útil es mínima y solo contiene la información de alerta, debería verse así:

{"aps":{"alert":""}}

Eso ocupa 20 caracteres (20 bytes), dejando 236 bytes para poner dentro de la cadena de alerta. Con ASCII, tendrá 236 caracteres, y podría ser menor con UTF8 y UTF16.

Anurag
fuente
La codificación ASCII viola la especificación JSON, que requiere UTF-8, UTF-16LE, UTF-16BE, UTF-32LE o UTF-32BE. Ver ietf.org/rfc/rfc4627.txt ; página 4.
Aaron Brager
14
ASCII es un subconjunto de UTF-8, por lo que siempre es seguro transmitir ASCII de 8 bits a través del cable.
Patrick Horn
Solo por curiosidad, por qué lo mencionaste, debería ser de 236 bytes. ... Estoy ejecutando un problema de truncamiento ... si cuento la longitud total de caracteres, entonces no excede más de 1024 caracteres, la longitud de caracteres del mensaje de alerta truncado es 509 que estoy recibiendo. ¿Cuál podría ser la razón posible de la respuesta truncada? Cualquier sugerencia !!
Hitendra Joshi
15

El límite de las notificaciones de formato mejorado se documenta aquí .

Establece explícitamente:

La carga útil no debe exceder los 256 bytes y no debe tener terminación nula.

ascandroli afirma anteriormente que pudieron enviar mensajes con 1400 caracteres. Mis propias pruebas con el nuevo formato de notificación mostraron que un mensaje de solo 1 byte por encima del límite de 256 byte fue rechazado. Dado que los documentos son muy explícitos en este punto, sugiero que sea más seguro usar 256 independientemente de lo que pueda lograr experimentalmente, ya que no hay garantía de que Apple no lo cambie a 256 en el futuro.

En cuanto al texto de alerta en sí, si puede ajustarlo en el tamaño de carga útil total de 256, iOS lo mostrará. Truncan el mensaje que aparece en la barra de estado, pero si abre el centro de notificaciones, el mensaje completo está allí. Incluso representa caracteres de nueva línea \n.

William Denniss
fuente
12

EDITAR:

Actualizando la respuesta con la información más reciente

El tamaño máximo permitido para una carga de notificación depende de la API de proveedor que emplee.

Cuando se utiliza la interfaz binaria heredada, el tamaño máximo de carga útil es de 2 KB (2048 bytes).

Cuando se utiliza la API de proveedor HTTP / 2, el tamaño máximo de carga útil es 4KB (4096 bytes). Para las notificaciones de Voz sobre Protocolo de Internet (VoIP), el tamaño máximo es de 5 KB (5120 bytes)

ANTIGUA RESPUESTA: Según el documento de Apple, la carga útil para iOS 8 es de 2 kilobytes (2048 bytes) y 256 bytes para iOS 7 y anteriores. (eliminé el enlace porque era un documento antiguo y ahora está roto)

Entonces, si solo envía un mensaje de texto, tiene 2028 (iOS 8+) o 236 (iOS 7-) caracteres disponibles.

La carga de notificación

Cada notificación remota incluye una carga útil. La carga útil contiene información sobre cómo el sistema debe alertar al usuario, así como cualquier dato personalizado que proporcione. En iOS 8 y versiones posteriores, el tamaño máximo permitido para una carga de notificación es de 2 kilobytes; El servicio de notificaciones push de Apple rechaza cualquier notificación que exceda este límite. (Antes de iOS 8 y en OS X, el tamaño máximo de carga útil es de 256 bytes).

Pero lo he probado y también puedes enviar 2 kilobytes a dispositivos iOS 7, incluso en configuraciones de producción

jcesarmobile
fuente
Estimado votante, si votó a favor debido a que los enlaces están rotos, toda la información ya está aquí y es correcta, el enlace fue solo para referencia. Además, es bueno comentar por qué no votó.
jcesarmobile
10

Aquí hay algunas capturas de pantalla (banner, alerta y centro de notificaciones)

AlertaBanderaCentro de notificaciones

Loozie
fuente
7

Para notificaciones remotas regulares, el tamaño máximo es 4KB (4096 bytes) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS, el límite de tamaño es de 256 bytes, ¡pero desde la introducción de iOS 8 ha cambiado a 2kb!

https://forums.aws.amazon.com/ann.jspa?annID=2626

Con iOS 8, Apple introdujo nuevas características que permiten algunos casos de uso nuevos y ricos para notificaciones push móviles: notificaciones push interactivas, widgets de terceros y cargas útiles más grandes (2 KB). Hoy, nos complace anunciar el soporte para las nuevas capacidades de inserción móvil anunciadas con iOS 8. Estamos publicando una nueva aplicación de muestra de iOS 8 que demuestra cómo se pueden implementar estas nuevas características con SNS, y también hemos implementado el soporte para cargas de 2KB más grandes.

Jorgesys
fuente
5

De acuerdo con la WWDC 713_hd_whats_new_in_ios_notifications. El límite de tamaño anterior de 256 bytes para una carga útil de inserción ahora se ha aumentado a 2 kilobytes para iOS 8.

Fuente: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0

Klefevre
fuente
@Diziet Lo siento, no puedo encontrar una nota oficial sobre ese punto, pero se anunció oficialmente durante la última WWDC. Incluso Urban Airship lo anunció: urbanairship.com/blog/2014/07/02/…
klefevre
Aquí están las diapositivas / video si alguien quiere un enlace de Apple: developer.apple.com/videos/wwdc/2014 - Buscar "Novedades en las notificaciones de iOS"
Diziet
@ kl91 Eso está bien. No sincronizado con los comentarios, borré mi comentario cuando encontré la fuente. Si descarga el PDF, está en la página 82.
Diziet
1
@ kl94, por lo que si la aplicación aún admite la orientación para iOS 7, ¿se aplicará también el límite de tamaño de 2kB a las notificaciones push enviadas a dispositivos iOS 7? O la pregunta es: ¿los nuevos 2kB son para todas las notificaciones push, sin importar a qué plataforma apuntan?
Jing
@Jing Podemos pensar de manera optimista que el nuevo límite de tamaño se aplicará a todas las plataformas.
klefevre
1

Apple push rechazará una cadena por una variedad de razones. Probé una variedad de escenarios para la entrega push, y esta fue mi solución de trabajo (en python):

#  Apple rejects push payloads > 256 bytes (truncate msg to < 120 bytes to be safe)
if len(push_str) > 120:
    push_str = push_str[0:120-3] + '...'

# Apple push rejects all quotes, remove them
import re
push_str = re.sub("[\"']", '', push_str)

# Apple push needs to newlines escaped
import MySQLdb
push_str = MySQLdb.escape_string(push_str)

# send it
import APNSWrapper
wrapper = APNSWrapper.APNSNotificationWrapper(certificate=...)
message = APNSWrapper.APNSNotification()
message.token(...)
message.badge(1)
message.alert(push_str)
message.sound("default")
wrapper.append(message)
wrapper.notify()
Philip Fung
fuente
Gracias. Sin embargo, creo que lo importante es el razonamiento detrás de 120: ¿cómo llegaste a ese número? Sin embargo, ¿sería mejor hacer el truncamiento de la longitud después de las comillas y las nuevas líneas, ya que es una mejor representación de la longitud de la cadena final que se envió a Apple?
Rup
Gracias por su comentario sobre la eliminación de todas las citas, en iOS 11 tiene un error extraño en el que suena el mensaje pero no muestra nada.
Pedro Góes
1

Según el documento actualizado de Apple (verifique mi fecha de respuesta):

"... Cuando se utiliza la API del proveedor HTTP / 2, el tamaño máximo de carga útil es de 4096 bytes. Usando la interfaz binaria heredada, el tamaño máximo de carga útil es de 2048 bytes. El servicio de notificaciones push de Apple (APN) rechaza cualquier notificación que exceda el tamaño máximo".

Burak
fuente
1

Documento actualizado de Apple:

Cada notificación remota incluye una carga útil. La carga útil contiene información sobre cómo el sistema debe alertar al usuario, así como cualquier dato personalizado que proporcione. El tamaño máximo permitido para una carga de notificación depende de la API de proveedor que emplee. Cuando se utiliza la API de proveedor HTTP / 2, el tamaño máximo de carga útil es de 4096 bytes . Usando la interfaz binaria heredada, el tamaño máximo de carga útil es de 2048 bytes. El servicio de notificaciones push de Apple (APN) rechaza cualquier notificación que exceda el tamaño máximo.

SaRaVaNaN DM
fuente
0

mira mi prueba aquí

Podría enviar hasta 33 caracteres chinos y 13 bytes de valores personalizados.

oso de fuego
fuente