Яка максимальна довжина тексту попередження Push Notification?


142

Яка максимальна довжина тексту сповіщення про натискання на iOS?

У документації зазначається, що навантаження на сповіщення повинно становити менше 256 байт , але, безумовно, має бути певний обмежений символ для тексту попередження.

Відповіді:


245

Реальні межі для тексту попередження ніде не зафіксовані. Єдине, що говорить документація :

В iOS 8 і новіших версіях максимальний розмір, дозволений для корисного навантаження сповіщення, становить 2 кілобайти; Служба сповіщень Apple Push відмовляється від будь-якого повідомлення, яке перевищує цей ліміт. (До iOS 8 та в ОС X максимальний розмір корисної навантаження - 256 байт.)

Це те, що я міг знайти експерименти.

  • Попередження: До iOS 7 обмеження відображення сповіщень становило 107 символів. Більші повідомлення були усічені, і ви отримаєте "..." в кінці відображуваного повідомлення. З iOS 7 ліміт, здається, збільшується до 235 символів. Якщо ви перейдете понад 8 рядків, ваше повідомлення також буде врізаним.
  • Банери: банери обрізаються біля 62 символів або 2 рядків.
  • Центр сповіщень: повідомлення в центрі сповіщень врізаються приблизно в 110 символів або 4 рядки.
  • Екран блокування: те саме, що і центр сповіщень.

Як нагадування тут дуже гарна примітка з офіційної документації:

При необхідності iOS обрізає ваше повідомлення так, щоб воно добре вписувалося в кожен стиль доставки сповіщень; для найкращих результатів не слід усікати своє повідомлення.


8
Потрібно уточнити, що UIAlertView у додатку не має обмеження на показ; текст певної довжини перейде до вікна прокрутки. Однак повідомлення SMS або push-повідомлення, ймовірно, має обмеження 107 символів.
azdev

1
І відображений текст не обмежений корисним навантаженням, оскільки при використанні методу локалізації він більше не відповідає 1: 1. Корисне навантаження може бути коротким, тоді як остаточне повідомлення може бути набагато довшим. Питання полягає у відображенні повідомлення, яке не суворо пов'язане з максимальною довжиною корисного навантаження.
Марцін

1
Я міг би надіслати величезну корисну навантаження в пісочницю, і вона буде доставлена, але сервер виробництва був дуже обмежувальним до всього 256 байт і не на один байт більше.
DoctorDbx

хтось може сказати, GCM Android нажимає текст дисплея повідомлень довжиною?
harikrishnan

1
1. Для повідомлень Voice over Internet Protocol (VoIP) максимальний розмір корисного навантаження становить 5 КБ (5120 байт). 2. Для всіх інших віддалених сповіщень максимальний розмір корисного навантаження становить 4 КБ (4096 байт).
вікрам

26

Це має бути 236 байт. Наскільки я не знаю, розмір тексту попередження не обмежується, а лише загальний розмір корисного навантаження. Отже, враховуючи, чи корисна навантаження мінімальна і містить лише інформацію оповіщення, вона повинна виглядати так:

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

Це займає 20 символів (20 байт), залишаючи 236 байт, щоб помістити всередину рядок оповіщення. Що стосується ASCII, це буде 236 символів, і може бути меншим з UTF8 та UTF16.


Кодування ASCII порушує специфікацію JSON, для якої потрібні UTF-8, UTF-16LE, UTF-16BE, UTF-32LE або UTF-32BE. Дивіться ietf.org/rfc/rfc4627.txt ; сторінка 4.
Аарон Брагер

14
ASCII - це підмножина UTF-8, тому завжди безпечно передавати 8-бітний ASCII по дроту.
Патрік Хорн

просто цікаво, чому ви згадали тоді це повинно бути 236 байт. .. Я біжу з проблемою обрізання. Якщо я рахую загальну довжину діаграми, то вона не перевищує більше 1024 знаків, довжина повідомлення попередження укорочення - 509 я отримую. Що може бути причиною урізання відповіді. Будь-яка пропозиція !!
Hitendra Joshi

15

Ліміт повідомлень про покращений формат тут задокументований .

У ньому прямо зазначено:

Корисне навантаження не повинно перевищувати 256 байт і не повинно бути скасовано з нуля.

Аскандролі стверджує вище, що їм вдалося надсилати повідомлення з 1400 символами. Моє власне тестування з новим форматом сповіщень показало, що повідомлення лише на 1 байт понад ліміт 256 байт було відхилено. Зважаючи на те, що документи дуже чіткі в цьому питанні, я вважаю, що безпечніше використовувати 256 незалежно від того, чого ви можете досягти експериментально, оскільки немає гарантії, що Apple не змінить його на 256 у майбутньому.

Що стосується самого тексту попередження, якщо ви зможете помістити його в загальний розмір 256 корисних навантажень, він буде відображатися iOS. Вони врізають повідомлення, яке відображається на панелі стану, але якщо ви відкриєте центр сповіщень, все повідомлення є. Він навіть видає символи нового рядка \n.


12

Редагувати:

Оновлення відповіді найновішою інформацією

Максимальний розмір, дозволений для навантаження сповіщення, залежить від того, якого API провайдера ви використовуєте.

При використанні застарілого двійкового інтерфейсу максимальний розмір корисної навантаження становить 2 КБ (2048 байт).

При використанні API провайдера HTTP / 2 максимальний розмір корисної навантаження становить 4 КБ (4096 байт). Для сповіщень за протоколом голосу через Інтернет (VoIP), максимальний розмір - 5 КБ (5120 байт)

СТАРИЙ ВІДПОВІДЬ: За даними apple doc, навантаження для iOS 8 становить 2 кілобайти (2048 байт) і 256 байт для iOS 7 та попередні. (видалено посилання, як це був старий документ, і він зараз зламаний)

Тож якщо ви просто надсилаєте текст, у вас є 2028 (iOS 8+) або 236 (iOS 7-) символів.

Навантаження сповіщення

Кожне віддалене повідомлення включає корисне навантаження. Корисне навантаження містить інформацію про те, як система повинна попереджати користувача, а також будь-які спеціальні дані, які ви надаєте. В iOS 8 і новіших версіях максимальний розмір, дозволений для корисного навантаження сповіщення, становить 2 кілобайти; Служба Apple Push Notification відмовляється від будь-якого повідомлення, яке перевищує цей ліміт. (До iOS 8 та в ОС X максимальний розмір корисної навантаження - 256 байт.)

Але я протестував, і ви можете відправити 2 кілобайти на пристрої iOS 7, навіть у виробничих конфігураціях


Шановний downvoter, якщо ви подаєте заявку через порушення посилань, вся інформація вже є і вона правильна, посилання було лише для ознайомлення. Крім того, добре прокоментувати, чому ви прихилилися.
jcesarmobile

10

Ось кілька скріншотів (банер, оповіщення та центр сповіщень)

СповіщенняБанерЦентр повідомлень


7

Для звичайних віддалених сповіщень максимальний розмір - 4 КБ (4096 байт) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS обмеження розміру становить 256 байт, але з моменту впровадження iOS 8 змінилося на 2 кб!

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

Завдяки iOS 8 компанія Apple представила нові функції, які дозволяють отримати нові багаті випадки використання мобільних push-сповіщень - інтерактивні push-сповіщення, сторонні віджети та більші (2 Кб) корисні навантаження. Сьогодні ми раді оголосити про підтримку нових можливостей мобільного поштовху, оголошених за допомогою iOS 8. Ми публікуємо нову програму iOS 8 Sample, яка демонструє, як ці нові функції можна реалізувати за допомогою SNS, а також реалізує підтримку більшої корисної навантаження на 2 КБ.


5

Відповідно до WWDC 713_hd_whats_new_in_ios_notifications. Попередня межа розміру 256 байт для навантажувального навантаження тепер збільшена до 2 кілобайт для iOS 8.

Джерело: http://asciiwwdc.com/2014/sesions/713?q=notification#1414.0


@Diziet Вибачте, я не можу знайти офіційну записку з цього приводу, але вона була офіційно оголошена під час останнього WWDC. Навіть Urban Airship
анонсував

Ось слайди / відео, якщо хтось хоче посилання на яблуко: developer.apple.com/videos/wwdc/2014 - Пошук "Що нового в сповіщеннях про iOS"
Diziet

@ kl91 Це нормально. Не синхронізувавшись із коментарями, я видалив свій коментар, коли знайшов джерело. Якщо ви завантажите PDF, це на сторінці 82.
Дізіет

1
@ kl94, тож якщо додаток все ще підтримує націлювання на iOS 7, чи застосовуватиметься обмеження розміру 2 КБ також для надіслати сповіщення на пристрої iOS 7? Або питання: чи є новий 2 КБ для всіх push-сповіщень, незалежно від того, на яку платформу він націлений?
Цзін

@Jing Ми можемо оптимістично думати, що новий ліміт розміру застосовуватиметься до кожної платформи.
klefevre

1

Apple push відхилить рядок з різних причин. Я перевіряв різні сценарії доставки push, і це було моїм робочим виправленням (у 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()

Дякую. Я думаю, що важливим моментом є міркування за 120, хоча - як ти потрапив до цього числа? Чи було б краще зробити обрізання довжини після лапок та нових рядків, оскільки це краще представлення довжини остаточного рядка, надісланого Apple?
Rup

Дякуємо за Ваш коментар щодо видалення всіх лапок, на iOS 11 є дивна помилка, де звучить повідомлення, але нічого не показує.
Педро Гоес

1

Відповідно до оновленого документа Apple (ознайомтесь із моєю датою відповіді):

"... При використанні API провайдера HTTP / 2 максимальний розмір корисної навантаження становить 4096 байт. Використовуючи застарілий двійковий інтерфейс, максимальний розмір корисної навантаження становить 2048 байт. Служба Apple Push Notification (APN) відмовляється від будь-якого повідомлення, що перевищує максимальний розмір."


1

Оновлений документ Apple:

Кожне віддалене повідомлення включає корисне навантаження. Корисне навантаження містить інформацію про те, як система повинна попереджати користувача, а також будь-які спеціальні дані, які ви надаєте. Максимальний розмір, дозволений для навантаження сповіщення, залежить від того, якого API провайдера ви використовуєте. При використанні API провайдера HTTP / 2 максимальний розмір корисної навантаження становить 4096 байт . Використовуючи застарілий двійковий інтерфейс, максимальний розмір корисної навантаження становить 2048 байт. Служба Apple Push Notification (APN) відмовляється від будь-якого повідомлення, яке перевищує максимальний розмір.


0

дивіться мій тест тут

Я міг би надіслати до 33 китайських символів та 13 байтів спеціальних значень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.