Qual é o tamanho máximo de um texto de alerta de notificação por push?

Respostas:

245

Os limites reais para o texto de alerta não estão documentados em nenhum lugar. A única coisa que a documentação diz é:

No iOS 8 e posterior, o tamanho máximo permitido para uma carga de notificação é de 2 kilobytes; O Apple Push Notification Service recusa qualquer notificação que exceda esse limite. (Antes do iOS 8 e no OS X, o tamanho máximo da carga útil é de 256 bytes.)

Isto é o que eu pude encontrar fazendo alguns experimentos.

  • Alertas: antes do iOS 7, o limite de exibição de alertas era de 107 caracteres. Mensagens maiores foram truncadas e você receberia um "..." no final da mensagem exibida. No iOS 7, o limite parece aumentar para 235 caracteres. Se você ultrapassar 8 linhas, sua mensagem também será truncada.
  • Banners: os banners são truncados em torno de 62 caracteres ou 2 linhas.
  • Centro de Notificação: As mensagens no centro de notificação são truncadas em torno de 110 caracteres ou 4 linhas.
  • Tela de bloqueio: Igual a um centro de notificação.

Apenas como lembrete, aqui está uma nota muito boa da documentação oficial:

Se necessário, o iOS trunca sua mensagem para que ela se encaixe bem em cada estilo de entrega de notificação; para obter melhores resultados, você não deve truncar sua mensagem.

ascandroli
fonte
8
Deve-se esclarecer que um UIAlertView no aplicativo não tem limite de exibição; texto com um certo comprimento entrará em uma exibição de rolagem. Um SMS ou alerta de push provavelmente tem esse limite de 107 caracteres.
precisa saber é
1
E o texto exibido não é limitado pela carga, porque quando você usa o método de localização, ele não corresponde mais a 1: 1. A carga útil pode ser curta, enquanto a mensagem final pode ser muito maior. A questão é exibir a mensagem que não está estritamente relacionada ao tamanho máximo da carga útil.
Marcin
1
Eu poderia enviar uma enorme carga útil para a sandbox e ela seria entregue, mas o servidor de produção era muito restritivo a apenas 256 bytes e nem um byte a mais.
DoctorDbx
alguém pode dizer ao notificador push do GCM para Android o tamanho do texto exibido?
precisa saber é o seguinte
1
1. Para notificações de VoIP, o tamanho máximo da carga útil é de 5 KB (5120 bytes). 2. Para todas as outras notificações remotas, o tamanho máximo da carga útil é de 4 KB (4096 bytes).
vikram
26

Deve ter 236 bytes. Não há restrições quanto ao tamanho do texto de alerta, tanto quanto eu sei, mas apenas o tamanho total da carga útil. Portanto, considerando se a carga útil é mínima e contém apenas as informações de alerta, deve se parecer com:

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

Isso ocupa 20 caracteres (20 bytes), deixando 236 bytes para colocar dentro da cadeia de alerta. Com o ASCII, serão 236 caracteres e podem ser menores com UTF8 e UTF16.

Anurag
fonte
A codificação ASCII viola a especificação JSON, que requer UTF-8, UTF-16LE, UTF-16BE, UTF-32LE ou UTF-32BE. Veja ietf.org/rfc/rfc4627.txt ; página 4.
Aaron Brager
14
O ASCII é um subconjunto do UTF-8, portanto, é sempre seguro transmitir ASCII de 8 bits pelo fio.
Patrick Horn
apenas curioso, por que você mencionou então deve ser 236 bytes. .. Estou executando com problema truncado .. se eu contar o comprimento total do caractere, não excederá mais do que 1024 caracteres, o comprimento do caracteres da mensagem de alerta truncado será 509 que estou recebendo. O que poderia ser possível motivo de resposta truncada. Alguma sugestão !!
Hitendra Joshi
15

O limite das notificações de formato avançado está documentado aqui .

Ele afirma explicitamente:

A carga útil não deve exceder 256 bytes e não deve ter terminação nula.

ascandroli afirma acima que eles foram capazes de enviar mensagens com 1400 caracteres. Meu próprio teste com o novo formato de notificação mostrou que uma mensagem de apenas 1 byte acima do limite de 256 bytes foi rejeitada. Dado que os documentos são muito explícitos neste ponto, sugiro que seja mais seguro usar 256, independentemente do que você possa conseguir experimentalmente, pois não há garantia de que a Apple não o altere para 256 no futuro.

Quanto ao texto de alerta em si, se você pode ajustá-lo no tamanho total da carga útil de 256, ele será exibido pelo iOS. Eles truncam a mensagem que aparece na barra de status, mas se você abrir o centro de notificação, a mensagem inteira estará lá. Ele até renderiza caracteres de nova linha \n.

William Denniss
fonte
12

EDITAR:

Atualizando a resposta com as informações mais recentes

O tamanho máximo permitido para uma carga de notificação depende de qual API do provedor você emprega.

Ao usar a interface binária herdada, o tamanho máximo da carga útil é de 2 KB (2048 bytes).

Ao usar a API do provedor HTTP / 2, o tamanho máximo da carga útil é de 4KB (4096 bytes). Para notificações de VoIP, o tamanho máximo é de 5 KB (5120 bytes)

RESPOSTA ANTIGA: De acordo com o documento da apple, a carga útil do iOS 8 é de 2 kilobytes (2048 bytes) e 256 bytes para o iOS 7 e versões anteriores. (removeu o link porque era um documento antigo e está quebrado agora)

Portanto, se você acabou de enviar texto, você tem 2028 (iOS 8+) ou 236 (iOS 7-) caracteres disponíveis.

A carga útil da notificação

Cada notificação remota inclui uma carga útil. A carga útil contém informações sobre como o sistema deve alertar o usuário, bem como quaisquer dados personalizados que você fornece. No iOS 8 e posterior, o tamanho máximo permitido para uma carga de notificação é de 2 kilobytes; O serviço Apple Push Notification recusa qualquer notificação que exceda esse limite. (Antes do iOS 8 e no OS X, o tamanho máximo da carga útil é de 256 bytes.)

Mas testei e você também pode enviar 2 kilobytes para dispositivos iOS 7, mesmo em configurações de produção

jcesarmobile
fonte
Prezado (a) downvoter (a), se você recusou por causa da quebra dos links, todas as informações já estão aqui e estão corretas, o link era apenas para referência. Além disso, é bom comentar por que você não votou.
Jsarmobile #
10

Aqui estão algumas capturas de tela (banner, alerta e centro de notificações)

AlertaBandeiraCentro de Notificação

Loozie
fonte
7

Para notificações remotas regulares, o tamanho máximo é de 4KB (4096 bytes) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS, o limite de tamanho é de 256 bytes, mas desde a introdução do iOS 8 mudou para 2kb!

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

Com o iOS 8, a Apple introduziu novos recursos que permitem alguns novos casos de uso avançados para notificações push móveis - notificações push interativas, widgets de terceiros e cargas úteis maiores (2 KB). Hoje, temos o prazer de anunciar o suporte para os novos recursos de envio móvel anunciados com o iOS 8. Estamos publicando um novo aplicativo de exemplo do iOS 8 que demonstra como esses novos recursos podem ser implementados com o SNS e também implementamos suporte para cargas úteis maiores de 2 KB.

Jorgesys
fonte
5

De acordo com o WWDC 713_hd_whats_new_in_ios_notifications. O limite de tamanho anterior de 256 bytes para uma carga útil de envio foi aumentado para 2 kilobytes no iOS 8.

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

Klefevre
fonte
@ Diiziet Desculpe, não consigo encontrar uma nota oficial sobre esse ponto, mas ela foi anunciada oficialmente na última WWDC. Até o Dirigível Urbano o anunciou: urbanairship.com/blog/2014/07/02/…
klefevre
Aqui está a diapositivos / vídeo, se alguém quiser um link para a Apple: developer.apple.com/videos/wwdc/2014 - Pesquisar "O que há de novo no iOS Notificações"
Diziet
@ kl91 Tudo bem. Fora de sincronia com os comentários, excluí meu comentário quando encontrei a fonte. Se você baixar o PDF é na página 82.
Diziet
1
@ kl94, por isso, se o aplicativo ainda oferecer suporte à segmentação para iOS 7, o limite de tamanho de 2kB também se aplicará a notificações por push enviadas para dispositivos iOS 7? Ou a pergunta é: o novo 2kB é para todas as notificações por push, independentemente da plataforma destinada?
Jing
@Jing Podemos pensar otimista que o novo limite de tamanho será aplicado a todas as plataformas.
klefevre
1

O empurrão da Apple rejeitará uma string por vários motivos. Testei uma variedade de cenários para entrega por push, e esta foi minha correção de trabalho (em 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
fonte
Obrigado. Mas acho que o mais importante é o raciocínio por trás dos 120 - como você chegou a esse número? Seria melhor fazer o truncamento do comprimento após as aspas e as novas linhas, pois essa é uma melhor representação do comprimento da sequência final enviada à Apple?
Rup
Obrigado pelo seu comentário sobre a remoção de todas as citações, no iOS 11 ele possui um bug estranho, onde soa a mensagem, mas não mostra nada.
Pedro Góes
1

De acordo com o documento Apple atualizado (verifique minha data de resposta):

"... Ao usar a API do provedor HTTP / 2, o tamanho máximo da carga útil é de 4096 bytes. Usando a interface binária herdada, o tamanho máximo da carga útil é de 2048 bytes. O serviço de notificação por push da Apple (APNs) recusa qualquer notificação que exceda o tamanho máximo."

Burak
fonte
1

Doc. Atualizado pela Apple:

Cada notificação remota inclui uma carga útil. A carga útil contém informações sobre como o sistema deve alertar o usuário, bem como quaisquer dados personalizados que você fornece. O tamanho máximo permitido para uma carga de notificação depende de qual API do provedor você emprega. Ao usar a API do provedor HTTP / 2, o tamanho máximo da carga útil é de 4096 bytes . Usando a interface binária herdada, o tamanho máximo da carga útil é de 2048 bytes. O serviço de notificação por push da Apple (APNs) recusa qualquer notificação que exceda o tamanho máximo.

SaRaVaNaN DM
fonte
0

veja meu teste aqui

Eu poderia enviar até 33 caracteres chineses e 13 bytes de valores personalizados.

urso de fogo
fonte