Was ist die maximale Länge eines Push-Benachrichtigungs-Alarmtextes?

Antworten:

245

Die tatsächlichen Grenzen für den Warnungstext sind nirgendwo dokumentiert. Das einzige, was in der Dokumentation steht, ist:

In iOS 8 und höher beträgt die maximal zulässige Größe für eine Benachrichtigungsnutzlast 2 Kilobyte. Der Apple Push Notification Service lehnt jede Benachrichtigung ab, die dieses Limit überschreitet. (Vor iOS 8 und unter OS X beträgt die maximale Nutzlast 256 Byte.)

Dies ist, was ich bei einigen Experimenten finden konnte.

  • Warnungen: Vor iOS 7 betrug das Limit für die Anzeige von Warnungen 107 Zeichen. Größere Nachrichten wurden abgeschnitten und am Ende der angezeigten Nachricht wird ein "..." angezeigt. Mit iOS 7 scheint das Limit auf 235 Zeichen erhöht zu sein. Wenn Sie über 8 Zeilen gehen, wird Ihre Nachricht ebenfalls abgeschnitten.
  • Banner: Banner werden um 62 Zeichen oder 2 Zeilen abgeschnitten.
  • Benachrichtigungscenter: Die Nachrichten im Benachrichtigungscenter werden mit 110 Zeichen oder 4 Zeilen abgeschnitten.
  • Sperrbildschirm: Entspricht einem Benachrichtigungscenter.

Nur zur Erinnerung hier eine sehr gute Anmerkung aus der offiziellen Dokumentation:

Bei Bedarf schneidet iOS Ihre Nachricht so ab, dass sie gut in jeden Benachrichtigungszustellungsstil passt. Für beste Ergebnisse sollten Sie Ihre Nachricht nicht abschneiden.

Ascandroli
quelle
8
Sollte klargestellt werden, dass ein In-App-UIAlertView keine Anzeigebeschränkung hat; Text über eine bestimmte Länge wird in eine Bildlaufansicht verschoben. Ein SMS- oder Push-Alarm hat jedoch wahrscheinlich diese Beschränkung von 107 Zeichen.
Azdev
1
Der angezeigte Text ist nicht durch die Nutzlast begrenzt, da er bei Verwendung der Lokalisierungsmethode nicht mehr 1: 1 übereinstimmt. Die Nutzlast kann kurz sein, während die endgültige Nachricht viel länger sein kann. Die Frage bezieht sich auf die Anzeige von Nachrichten, die nicht ausschließlich mit der maximalen Länge der Nutzlast zusammenhängen.
Marcin
1
Ich konnte eine riesige Nutzlast an die Sandbox senden und sie würde geliefert werden, aber der Produktionsserver war sehr restriktiv auf nur 256 Bytes und nicht ein Byte mehr.
DoctorDbx
Kann jemand die Länge des GCM Android Push Notif-Anzeigetextes bestimmen?
Harikrishnan
1
1. Für VoIP-Benachrichtigungen (Voice over Internet Protocol) beträgt die maximale Nutzlast 5 KB (5120 Byte). 2. Für alle anderen Remote-Benachrichtigungen beträgt die maximale Nutzlast 4 KB (4096 Byte).
Vikram
26

Es sollte 236 Bytes sein. Soweit ich weiß, gibt es keine Einschränkung für die Größe des Alarmtextes, sondern nur für die Gesamtgröße der Nutzdaten. Wenn also die Nutzlast minimal ist und nur die Warninformationen enthält, sollte sie folgendermaßen aussehen:

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

Das nimmt 20 Zeichen (20 Bytes) in Anspruch, so dass 236 Bytes in die Warnzeichenfolge eingefügt werden müssen. Bei ASCII sind das 236 Zeichen und bei UTF8 und UTF16 möglicherweise weniger.

Anurag
quelle
Die ASCII-Codierung verstößt gegen die JSON-Spezifikation, für die UTF-8, UTF-16LE, UTF-16BE, UTF-32LE oder UTF-32BE erforderlich sind. Siehe ietf.org/rfc/rfc4627.txt ; Seite 4.
Aaron Brager
14
ASCII ist eine Teilmenge von UTF-8, daher ist es immer sicher, 8-Bit-ASCII über das Kabel zu übertragen.
Patrick Horn
nur neugierig, warum du damals erwähnt hast Es sollten 236 Bytes sein. ..Ich habe ein Problem mit dem Abschneiden. Wenn ich die Gesamtlänge der Zeichen zähle, überschreitet sie nicht mehr als 1024 Zeichen. Die Zeichenlänge für das Abschneiden der Warnmeldung beträgt 509, die ich erhalte. Was könnte ein möglicher Grund für eine abgeschnittene Antwort sein? Irgendein Vorschlag !!
Hitendra Joshi
15

Das Limit der erweiterten Formatbenachrichtigungen ist hier dokumentiert .

Es heißt ausdrücklich:

Die Nutzdaten dürfen 256 Byte nicht überschreiten und dürfen nicht nullterminiert werden.

ascandroli behauptet oben, dass sie Nachrichten mit 1400 Zeichen senden konnten. Meine eigenen Tests mit dem neuen Benachrichtigungsformat haben ergeben, dass eine Nachricht abgelehnt wurde, die nur 1 Byte über dem 256-Byte-Limit liegt. Angesichts der Tatsache, dass die Dokumente in diesem Punkt sehr explizit sind, schlage ich vor, dass es sicherer ist, 256 zu verwenden, unabhängig davon, was Sie experimentell erreichen können, da es keine Garantie gibt, dass Apple es in Zukunft nicht auf 256 ändern wird.

Wenn Sie den Alarmtext selbst in die Gesamtnutzlastgröße von 256 einpassen können, wird er von iOS angezeigt. Sie kürzen die Nachricht, die in der Statusleiste angezeigt wird. Wenn Sie jedoch das Benachrichtigungscenter öffnen, ist die gesamte Nachricht dort. Es werden sogar Zeilenumbrüche gerendert \n.

William Denniss
quelle
12

BEARBEITEN:

Aktualisierung der Antwort mit den neuesten Informationen

Die maximal zulässige Größe für eine Benachrichtigungsnutzlast hängt davon ab, welche Anbieter-API Sie verwenden.

Bei Verwendung der älteren Binärschnittstelle beträgt die maximale Nutzlastgröße 2 KB (2048 Byte).

Bei Verwendung der HTTP / 2-Provider-API beträgt die maximale Nutzlast 4 KB (4096 Byte). Für VoIP-Benachrichtigungen (Voice over Internet Protocol) beträgt die maximale Größe 5 KB (5120 Byte).

ALTE ANTWORT: Laut Apple Doc beträgt die Nutzlast für iOS 8 2 Kilobyte (2048 Byte) und 256 Byte für iOS 7 und früher. (Der Link wurde entfernt, da es sich um ein altes Dokument handelt und es jetzt defekt ist.)

Wenn Sie also nur Text senden, stehen Ihnen 2028 (iOS 8+) oder 236 (iOS 7-) Zeichen zur Verfügung.

Die Benachrichtigungsnutzlast

Jede Remote-Benachrichtigung enthält eine Nutzlast. Die Nutzdaten enthalten Informationen darüber, wie das System den Benutzer benachrichtigen soll, sowie alle von Ihnen angegebenen benutzerdefinierten Daten. In iOS 8 und höher beträgt die maximal zulässige Größe für eine Benachrichtigungsnutzlast 2 Kilobyte. Der Apple Push Notification Service lehnt jede Benachrichtigung ab, die dieses Limit überschreitet. (Vor iOS 8 und unter OS X beträgt die maximale Nutzlast 256 Byte.)

Aber ich habe getestet und Sie können auch in Produktionskonfigurationen 2 Kilobyte an iOS 7-Geräte senden

jcesarmobile
quelle
Sehr geehrter Downvoter, wenn Sie wegen defekter Links abstimmen, sind alle Informationen bereits vorhanden und es ist richtig, der Link diente nur als Referenz. Es ist auch gut zu kommentieren, warum Sie nicht gewählt haben.
Jcesarmobile
10

Hier sind einige Screenshots (Banner, Alarm & Benachrichtigungscenter)

AufmerksamBannerNachrichtencenter

Loozie
quelle
7

Für reguläre Remote-Benachrichtigungen beträgt die maximale Größe 4 KB (4096 Byte). https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS Die Größenbeschränkung beträgt 256 Byte, aber seit der Einführung von iOS 8 wurde auf 2 KB geändert!

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

Mit iOS 8 hat Apple neue Funktionen eingeführt, die einige umfangreiche neue Anwendungsfälle für mobile Push-Benachrichtigungen ermöglichen - interaktive Push-Benachrichtigungen, Widgets von Drittanbietern und größere Nutzdaten (2 KB). Wir freuen uns, heute die Unterstützung für die neuen mobilen Push-Funktionen bekannt zu geben, die mit iOS 8 angekündigt wurden. Wir veröffentlichen eine neue iOS 8-Beispiel-App, die zeigt, wie diese neuen Funktionen mit SNS implementiert werden können, und haben auch Unterstützung für größere 2-KB-Nutzdaten implementiert.

Jorgesys
quelle
5

Laut WWDC 713_hd_whats_new_in_ios_notifications. Die vorherige Größenbeschränkung von 256 Byte für eine Push-Nutzlast wurde jetzt für iOS 8 auf 2 Kilobyte erhöht .

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

klefevre
quelle
@Diziet Entschuldigung, ich kann keine offizielle Notiz zu diesem Punkt finden, aber sie wurde offiziell während der letzten WWDC angekündigt. Sogar Urban Airship hat es angekündigt: urbanairship.com/blog/2014/07/02/…
klefevre
Hier sind die Folien / Videos, wenn jemand einen Apple-Link haben möchte: developer.apple.com/videos/wwdc/2014 - Suche nach "Was ist neu in iOS-Benachrichtigungen"
Diziet
@ kl91 Das ist OK. Nicht mit den Kommentaren synchronisiert, habe ich meinen Kommentar gelöscht, als ich die Quelle gefunden habe. Wenn Sie das PDF herunterladen, finden Sie es auf Seite 82.
Diziet
1
@ kl94 Wenn die App weiterhin das Targeting für iOS 7 unterstützt, gilt die Größenbeschränkung von 2 KB auch für Push-Benachrichtigungen, die an iOS 7-Geräte gesendet werden? Oder die Frage ist: Ist die neue 2kB für alle Push-Benachrichtigungen, egal auf welche Plattform sie abzielt?
Jing
@Jing Wir können optimistisch davon ausgehen, dass die neue Größenbeschränkung für jede Plattform gilt.
Klefevre
1

Apple Push lehnt eine Zeichenfolge aus verschiedenen Gründen ab. Ich habe verschiedene Szenarien für die Push-Übermittlung getestet, und dies war meine funktionierende Lösung (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()
Philip Fung
quelle
Vielen Dank. Ich denke, das Wichtigste ist jedoch die Argumentation hinter 120 - wie sind Sie zu dieser Zahl gekommen? Wäre es jedoch besser, die Länge nach den Anführungszeichen und den Zeilenumbrüchen zu kürzen, da dies eine bessere Darstellung der Länge der endgültigen Zeichenfolge ist, die an Apple gesendet wurde?
Rup
Vielen Dank für Ihren Kommentar zum Entfernen aller Anführungszeichen. Unter iOS 11 gibt es einen seltsamen Fehler, bei dem die Nachricht ertönt, aber nichts angezeigt wird.
Pedro Góes
1

Laut aktualisiertem Apple-Dokument (überprüfen Sie mein Antwortdatum):

"... Bei Verwendung der HTTP / 2-Provider-API beträgt die maximale Nutzlastgröße 4096 Byte. Bei Verwendung der alten Binärschnittstelle beträgt die maximale Nutzlastgröße 2048 Byte. Apple Push Notification Service (APNs) lehnt jede Benachrichtigung ab, die die maximale Größe überschreitet."

Burak
quelle
1

Apple aktualisiert Doc:

Jede Remote-Benachrichtigung enthält eine Nutzlast. Die Nutzdaten enthalten Informationen darüber, wie das System den Benutzer benachrichtigen soll, sowie alle von Ihnen angegebenen benutzerdefinierten Daten. Die maximal zulässige Größe für eine Benachrichtigungsnutzlast hängt davon ab, welche Anbieter-API Sie verwenden. Bei Verwendung der HTTP / 2-Provider-API beträgt die maximale Nutzlastgröße 4096 Byte . Bei Verwendung der alten Binärschnittstelle beträgt die maximale Nutzlastgröße 2048 Byte. Der Apple Push Notification Service (APNs) lehnt jede Benachrichtigung ab, die die maximale Größe überschreitet.

SaRaVaNaN DM
quelle
0

siehe meinen Test hier

Ich konnte bis zu 33 chinesische Schriftzeichen und 13 Bytes benutzerdefinierte Werte senden.

Feuerbär
quelle