Какова максимальная длина текста оповещения Push-уведомления?


143

Какова максимальная длина текста оповещения push-уведомления iOS?

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

Ответы:


248

Реальные ограничения для текста предупреждения нигде не задокументированы. Единственное, о чем говорится в документации :

В iOS 8 и более поздних версиях максимальный размер полезной нагрузки уведомления составляет 2 килобайта; Служба push-уведомлений Apple отклоняет любые уведомления, превышающие этот предел. (До iOS 8 и в OS X максимальный размер полезной нагрузки составлял 256 байт.)

Это то, что я смог найти в некоторых экспериментах.

  • Оповещения: до iOS 7 ограничение на отображение оповещений составляло 107 символов. Сообщения большего размера были усечены, и в конце отображаемого сообщения вы бы получили знак «...». В iOS 7 ограничение кажется увеличенным до 235 символов. Если вы перейдете на 8 строк, ваше сообщение также будет обрезано.
  • Баннеры: баннеры обрезаются до 62 символов или 2 строк.
  • Центр уведомлений: сообщения в центре уведомлений обрезаются примерно до 110 символов или 4 строк.
  • Экран блокировки: то же самое, что и центр уведомлений.

Напоминаем, что вот очень хорошее примечание из официальной документации:

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


8
Следует уточнить, что встроенный в приложение UIAlertView не имеет ограничения на отображение; текст более определенной длины будет отображаться в режиме прокрутки. Однако SMS или push-уведомление, вероятно, имеет ограничение в 107 символов.
azdev 05

1
И отображаемый текст не ограничен полезной нагрузкой, потому что при использовании метода локализации он больше не соответствует 1: 1. Полезная нагрузка может быть короткой, а окончательное сообщение может быть намного длиннее. Речь идет об отображении сообщения, которое строго не связано с максимальной длиной полезной нагрузки.
Marcin

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

Может ли кто-нибудь сказать, что длина текста push-уведомления GCM Android отображается?
harikrishnan

1
1. Для уведомлений по протоколу передачи голоса через Интернет (VoIP) максимальный размер полезной нагрузки составляет 5 КБ (5120 байт). 2. Для всех остальных удаленных уведомлений максимальный размер полезной нагрузки составляет 4 КБ (4096 байт).
vikram

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 символов. Я получаю. Что могло быть возможной причиной усеченного ответа. Любое предложение !!
Хитендра Джоши,

15

Предел уведомлений в расширенном формате задокументирован здесь .

В нем прямо говорится:

Полезная нагрузка не должна превышать 256 байтов и не должна заканчиваться нулем.

ascandroli утверждает выше, что они могли отправлять сообщения с 1400 символами. Мое собственное тестирование с новым форматом уведомлений показало, что сообщение, превышающее ограничение в 256 байт, было отклонено. Учитывая, что в документации очень четко указано на этот момент, я предлагаю безопаснее использовать 256, независимо от того, что вы можете достичь экспериментально, поскольку нет гарантии, что Apple не изменит его на 256 в будущем.

Что касается самого текста предупреждения, если вы можете уместить его в общий размер полезной нагрузки 256, он будет отображаться iOS. Они усекают сообщение, которое отображается в строке состояния, но если вы откроете центр уведомлений, все сообщение будет там. Он даже отображает символы новой строки \n.


12

РЕДАКТИРОВАТЬ:

Обновление ответа последней информацией

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

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

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

СТАРЫЙ ОТВЕТ: Согласно документу Apple, полезная нагрузка для iOS 8 составляет 2 килобайта (2048 байтов) и 256 байтов для iOS 7 и более ранних версий. (удалил ссылку, так как это был старый документ, а сейчас он не работает)

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

Полезные данные уведомления

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

Но я протестировал, и вы также можете отправить 2 килобайта на устройства iOS 7, даже в производственных конфигурациях.


Уважаемый участник, голосующий против, если вы проголосовали против из-за того, что ссылки не работают, вся информация уже здесь, и она верна, ссылка была только для справки. Также хорошо прокомментировать, почему вы не проголосовали.
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 КБ). Сегодня мы рады объявить о поддержке новых возможностей мобильных push-уведомлений, анонсированных в iOS 8. Мы публикуем новый образец приложения для iOS 8, демонстрирующий, как эти новые функции могут быть реализованы с помощью SNS, а также реализовали поддержку более крупных полезных нагрузок 2 КБ.


5

Согласно WWDC 713_hd_whats_new_in_ios_notifications. Предыдущий предел размера 256 байтов для полезной нагрузки push теперь увеличен до 2 килобайт для iOS 8.

Источник: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0


@Diziet Извините, я не могу найти официального сообщения по этому поводу, но он был официально объявлен во время последнего WWDC. Об этом объявил
klefevre

Вот слайды / видео, если кому-то нужна ссылка на яблоко: developer.apple.com/videos/wwdc/2014 - Поиск «Что нового в уведомлениях iOS»
Diziet

@ kl91 Ничего страшного. Не синхронизировавшись с комментариями, я удалил свой комментарий, когда нашел источник. Если вы загрузите PDF-файл, он будет на странице 82.
Diziet

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

@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 есть странная ошибка, когда сообщение звучит, но ничего не показывает.
Педро Гоэс, 02

1

Согласно обновленному документу Apple (проверьте дату моего ответа):

«... При использовании API провайдера HTTP / 2 максимальный размер полезной нагрузки составляет 4096 байт. При использовании устаревшего двоичного интерфейса максимальный размер полезной нагрузки составляет 2048 байт. Служба push-уведомлений Apple (APN) отклоняет любое уведомление, превышающее максимальный размер».


1

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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.