Qual è la lunghezza massima di un testo di avviso di notifica push?


Risposte:


245

I limiti reali per il testo di avviso non sono documentati da nessuna parte. L'unica cosa che dice la documentazione è:

In iOS 8 e versioni successive, la dimensione massima consentita per un payload di notifica è di 2 kilobyte; Apple Push Notification Service rifiuta qualsiasi notifica che superi questo limite. (Prima di iOS 8 e in OS X, la dimensione massima del payload è di 256 byte.)

Questo è quello che ho potuto trovare facendo alcuni esperimenti.

  • Avvisi: prima di iOS 7, il limite di visualizzazione degli avvisi era di 107 caratteri. I messaggi più grandi venivano troncati e si otterrebbe un "..." alla fine del messaggio visualizzato. Con iOS 7 il limite sembra essere aumentato a 235 caratteri. Se passi oltre 8 righe, anche il tuo messaggio verrà troncato.
  • Banner: i banner vengono troncati di circa 62 caratteri o 2 righe.
  • Centro notifiche: i messaggi nel centro notifiche vengono troncati di 110 caratteri o 4 righe.
  • Schermata di blocco: uguale a un centro di notifica.

Proprio come promemoria ecco una nota molto buona dalla documentazione ufficiale:

Se necessario, iOS tronca il tuo messaggio in modo che si adatti bene a ogni stile di consegna delle notifiche; per i migliori risultati, non dovresti troncare il tuo messaggio.


8
Va chiarito che un UIAlertView in-app non ha limiti di visualizzazione; il testo oltre una certa lunghezza andrà in una vista di scorrimento. Tuttavia, un SMS o un avviso push ha probabilmente quel limite di 107 caratteri.
azdev,

1
E il testo visualizzato non è limitato dal payload, perché quando si utilizza il metodo di localizzazione non corrisponde più a 1: 1. Il payload potrebbe essere breve mentre il messaggio finale potrebbe essere molto più lungo. La domanda riguarda la visualizzazione di un messaggio non strettamente correlata alla lunghezza massima del payload.
Marcin,

1
Potrei inviare un enorme payload alla sandbox e verrebbe consegnato, ma il server di produzione era molto restrittivo a soli 256 byte e non un byte in più.
DoctorDbx,

qualcuno può dire al GCM Android push notif visualizzare la lunghezza del testo?
harikrishnan,

1
1. Per le notifiche VoIP (Voice over Internet Protocol), la dimensione massima del payload è 5 KB (5120 byte). 2. Per tutte le altre notifiche remote, la dimensione massima del payload è 4 KB (4096 byte).
vikram,

26

Dovrebbe essere 236 byte. Per quanto ne so, non vi sono restrizioni sulla dimensione del testo di avviso, ma solo sulla dimensione del payload totale. Quindi, considerando se il payload è minimo e contiene solo le informazioni di avviso, dovrebbe apparire come:

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

Ciò richiede 20 caratteri (20 byte), lasciando 236 byte da inserire nella stringa di avviso. Con ASCII saranno 236 caratteri e potrebbero essere inferiori con UTF8 e UTF16.


La codifica ASCII viola le specifiche JSON, che richiedono UTF-8, UTF-16LE, UTF-16BE, UTF-32LE o UTF-32BE. Vedi ietf.org/rfc/rfc4627.txt ; pagina 4.
Aaron Brager,

14
ASCII è un sottoinsieme di UTF-8, quindi è sempre sicuro trasmettere ASCII a 8 bit sul filo.
Patrick Horn,

solo curioso, perché hai menzionato allora Dovrebbe essere 236 byte. .. Sono in esecuzione con il problema di troncamento .. se conto la lunghezza totale del carattere quindi non supera più di 1024 caratteri, la lunghezza del carattere del messaggio di avviso troncato è 509 che sto ricevendo. Quale potrebbe essere la ragione possibile della risposta troncata. Qualche suggerimento !!
Hitendra Joshi,

15

Il limite delle notifiche di formato avanzato è documentato qui .

Dichiara esplicitamente:

Il payload non deve superare 256 byte e non deve essere terminato con null.

ascandroli afferma sopra che erano in grado di inviare messaggi con 1400 caratteri. I miei test con il nuovo formato di notifica hanno mostrato che un messaggio a solo 1 byte oltre il limite di 256 byte è stato rifiutato. Dato che i documenti sono molto espliciti su questo punto, suggerisco che è più sicuro usare 256 indipendentemente da ciò che potresti essere in grado di ottenere sperimentalmente in quanto non vi è alcuna garanzia che Apple non lo cambierà in 256 in futuro.

Per quanto riguarda il testo di avviso stesso, se puoi adattarlo alla dimensione totale del payload 256, verrà visualizzato da iOS. Troncano il messaggio che appare sulla barra di stato, ma se apri il centro notifiche, l'intero messaggio è lì. Rende persino i caratteri di nuova riga \n.


12

MODIFICARE:

Aggiornamento della risposta con le ultime informazioni

La dimensione massima consentita per un payload di notifica dipende dall'API del provider utilizzata.

Quando si utilizza l'interfaccia binaria legacy, la dimensione massima del payload è di 2 KB (2048 byte).

Quando si utilizza l'API del provider HTTP / 2, la dimensione massima del payload è 4KB (4096 byte). Per le notifiche VoIP (Voice over Internet Protocol), la dimensione massima è 5 KB (5120 byte)

RISPOSTA VECCHIA: secondo il documento Apple, il payload per iOS 8 è di 2 kilobyte (2048 byte) e 256 byte per iOS 7 e precedenti. (rimosso il link perché era un vecchio documento e ora è rotto)

Quindi, se invii semplicemente testo, hai a disposizione 2028 (iOS 8+) o 236 (iOS 7-) caratteri.

Il payload di notifica

Ogni notifica remota include un payload. Il payload contiene informazioni su come il sistema dovrebbe avvisare l'utente e tutti i dati personalizzati forniti. In iOS 8 e versioni successive, la dimensione massima consentita per un payload di notifica è di 2 kilobyte; Il servizio di notifica push di Apple rifiuta qualsiasi notifica che superi questo limite. (Prima di iOS 8 e in OS X, la dimensione massima del payload è di 256 byte.)

Ma ho testato e puoi inviare 2 kilobyte anche ai dispositivi iOS 7, anche nelle configurazioni di produzione


Caro downvoter, se decidi di votare a causa dei collegamenti interrotti, tutte le informazioni sono già qui ed è corretto, il link era solo per riferimento. Inoltre, è bene commentare perché hai votato.
jcesarmobile,

10

Ecco alcuni screenshot (banner, avvisi e centro notifiche)

Mettere in guardiabandieraCentro di notifica


7

Per le notifiche remote regolari, la dimensione massima è 4KB (4096 byte) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS il limite di dimensione è di 256 byte, ma dall'introduzione di iOS 8 è cambiato a 2kb!

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

Con iOS 8, Apple ha introdotto nuove funzionalità che consentono alcuni nuovi casi d'uso avanzati per le notifiche push mobili: notifiche push interattive, widget di terze parti e payload più grandi (2 KB). Oggi, siamo lieti di annunciare il supporto per le nuove funzionalità di push mobile annunciate con iOS 8. Stiamo pubblicando una nuova app di esempio iOS 8 che dimostra come queste nuove funzionalità possono essere implementate con SNS e abbiamo anche implementato il supporto per payload maggiori di 2 KB.


5

Secondo il WWDC 713_hd_whats_new_in_ios_notifications. Il limite di dimensioni precedente di 256 byte per un payload push ora è stato aumentato a 2 kilobyte per iOS 8.

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


@Diziet Spiacente, non riesco a trovare una nota ufficiale su questo punto, ma è stata ufficialmente annunciata durante l'ultimo WWDC. Persino Urban Airship l'ha approvata
klefevre

Ecco le diapositive / video se qualcuno vuole un link Apple: developer.apple.com/videos/wwdc/2014 - Cerca "Novità nelle notifiche iOS"
Diziet,

@ kl91 Va bene. Non sincronizzato con i commenti, ho eliminato il mio commento quando ho trovato la fonte. Se scarichi il PDF è a pagina 82.
Diziet,

1
@ kl94, quindi se l'app supporta ancora il targeting per iOS 7, il limite di dimensioni di 2 KB si applica anche alle notifiche push inviate ai dispositivi iOS 7? Oppure la domanda è: è il nuovo 2kB per tutte le notifiche push, indipendentemente dalla piattaforma a cui si rivolge?
Jing

@Jing Possiamo ottimisticamente pensare che il nuovo limite di dimensioni verrà applicato a tutte le piattaforme.
Klefevre,

1

La spinta di Apple rifiuterà una stringa per una serie di motivi. Ho testato una varietà di scenari per la consegna push, e questa era la mia soluzione di lavoro (in 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()

Grazie. Penso che la parte importante sia il ragionamento dietro 120, come hai fatto a raggiungere quel numero? Sarebbe meglio fare il troncamento della lunghezza dopo le virgolette e le nuove righe, poiché si tratta di una migliore rappresentazione della lunghezza della stringa finale inviata ad Apple?
Rup,

Grazie per il tuo commento sulla rimozione di tutte le virgolette, su iOS 11 ha uno strano bug in cui suona il messaggio ma non mostra nulla.
Pedro Góes,

1

Secondo il documento Apple aggiornato (controlla la data della mia risposta):

"... Quando si utilizza l'API del provider HTTP / 2, la dimensione massima del payload è di 4096 byte. Utilizzando l'interfaccia binaria legacy, la dimensione massima del payload è di 2048 byte. Il servizio APN (Apple Push Notification Service) rifiuta qualsiasi notifica che superi la dimensione massima."


1

Doc Apple aggiornato:

Ogni notifica remota include un payload. Il payload contiene informazioni su come il sistema dovrebbe avvisare l'utente e tutti i dati personalizzati forniti. La dimensione massima consentita per un payload di notifica dipende dall'API del provider utilizzata. Quando si utilizza l'API del provider HTTP / 2, la dimensione massima del payload è 4096 byte . Utilizzando l' interfaccia binaria legacy, la dimensione massima del payload è di 2048 byte. Il servizio Apple Push Notification (APN) rifiuta qualsiasi notifica che superi la dimensione massima.


0

vedi il mio test qui

Potrei inviare fino a 33 caratteri cinesi e 13 byte di valori personalizzati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.