Яка максимальна довжина тексту сповіщення про натискання на iOS?
У документації зазначається, що навантаження на сповіщення повинно становити менше 256 байт , але, безумовно, має бути певний обмежений символ для тексту попередження.
Яка максимальна довжина тексту сповіщення про натискання на iOS?
У документації зазначається, що навантаження на сповіщення повинно становити менше 256 байт , але, безумовно, має бути певний обмежений символ для тексту попередження.
Відповіді:
Реальні межі для тексту попередження ніде не зафіксовані. Єдине, що говорить документація :
В iOS 8 і новіших версіях максимальний розмір, дозволений для корисного навантаження сповіщення, становить 2 кілобайти; Служба сповіщень Apple Push відмовляється від будь-якого повідомлення, яке перевищує цей ліміт. (До iOS 8 та в ОС X максимальний розмір корисної навантаження - 256 байт.)
Це те, що я міг знайти експерименти.
Як нагадування тут дуже гарна примітка з офіційної документації:
При необхідності iOS обрізає ваше повідомлення так, щоб воно добре вписувалося в кожен стиль доставки сповіщень; для найкращих результатів не слід усікати своє повідомлення.
Це має бути 236 байт. Наскільки я не знаю, розмір тексту попередження не обмежується, а лише загальний розмір корисного навантаження. Отже, враховуючи, чи корисна навантаження мінімальна і містить лише інформацію оповіщення, вона повинна виглядати так:
{"aps":{"alert":""}}
Це займає 20 символів (20 байт), залишаючи 236 байт, щоб помістити всередину рядок оповіщення. Що стосується ASCII, це буде 236 символів, і може бути меншим з UTF8 та UTF16.
Ліміт повідомлень про покращений формат тут задокументований .
У ньому прямо зазначено:
Корисне навантаження не повинно перевищувати 256 байт і не повинно бути скасовано з нуля.
Аскандролі стверджує вище, що їм вдалося надсилати повідомлення з 1400 символами. Моє власне тестування з новим форматом сповіщень показало, що повідомлення лише на 1 байт понад ліміт 256 байт було відхилено. Зважаючи на те, що документи дуже чіткі в цьому питанні, я вважаю, що безпечніше використовувати 256 незалежно від того, чого ви можете досягти експериментально, оскільки немає гарантії, що Apple не змінить його на 256 у майбутньому.
Що стосується самого тексту попередження, якщо ви зможете помістити його в загальний розмір 256 корисних навантажень, він буде відображатися iOS. Вони врізають повідомлення, яке відображається на панелі стану, але якщо ви відкриєте центр сповіщень, все повідомлення є. Він навіть видає символи нового рядка \n
.
Редагувати:
Оновлення відповіді найновішою інформацією
Максимальний розмір, дозволений для навантаження сповіщення, залежить від того, якого 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, навіть у виробничих конфігураціях
Для звичайних віддалених сповіщень максимальний розмір - 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 КБ.
Відповідно до WWDC 713_hd_whats_new_in_ios_notifications. Попередня межа розміру 256 байт для навантажувального навантаження тепер збільшена до 2 кілобайт для iOS 8.
Джерело: http://asciiwwdc.com/2014/sesions/713?q=notification#1414.0
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()
Відповідно до оновленого документа Apple (ознайомтесь із моєю датою відповіді):
"... При використанні API провайдера HTTP / 2 максимальний розмір корисної навантаження становить 4096 байт. Використовуючи застарілий двійковий інтерфейс, максимальний розмір корисної навантаження становить 2048 байт. Служба Apple Push Notification (APN) відмовляється від будь-якого повідомлення, що перевищує максимальний розмір."
Оновлений документ Apple:
Кожне віддалене повідомлення включає корисне навантаження. Корисне навантаження містить інформацію про те, як система повинна попереджати користувача, а також будь-які спеціальні дані, які ви надаєте. Максимальний розмір, дозволений для навантаження сповіщення, залежить від того, якого API провайдера ви використовуєте. При використанні API провайдера HTTP / 2 максимальний розмір корисної навантаження становить 4096 байт . Використовуючи застарілий двійковий інтерфейс, максимальний розмір корисної навантаження становить 2048 байт. Служба Apple Push Notification (APN) відмовляється від будь-якого повідомлення, яке перевищує максимальний розмір.
дивіться мій тест тут
Я міг би надіслати до 33 китайських символів та 13 байтів спеціальних значень.