Какова максимальная длина текста уведомления о push-уведомлении? - PullRequest
136 голосов
/ 10 июня 2011

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

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

Ответы [ 11 ]

234 голосов
/ 11 июня 2011

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

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

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

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

В качестве напоминания приведу очень хорошую заметку из официальной документации:

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

26 голосов
/ 10 июня 2011

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

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

Это занимает 20 символов (20 байт), оставляя 236 байт для размещения внутри строки предупреждения. С ASCII это будет 236 символов, и может быть меньше с UTF8 и UTF16.

15 голосов
/ 27 апреля 2013

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

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

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

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

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

11 голосов
/ 23 декабря 2014

EDIT:

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

Максимальный размер, допустимый для полезных данных уведомления, зависит от того, какой 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 и OS X, максимальный размер полезной нагрузки составляет 256 байт.)

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

10 голосов
/ 22 июня 2015

Вот несколько скриншотов (баннер, оповещение и центр уведомлений)

AlertBannerNotification Center

7 голосов
/ 24 сентября 2014

Для обычных удаленных уведомлений максимальный размер 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 голосов
/ 28 июля 2014

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

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

1 голос
/ 21 мая 2016

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

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

1 голос
/ 27 января 2016

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

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

1 голос
/ 12 июня 2014

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()
...