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

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

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

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

EDIT:

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

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

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

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

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

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

Полезная нагрузка уведомления

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

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

Ответ 5

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

AlertBannerNotification Center

Ответ 6

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

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

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

С iOS 8 Apple представила новые функции, которые позволяют некоторым богатым новым варианты использования для мобильных push-уведомлений - интерактивное нажатие уведомлений, сторонних виджетов и более крупных (2 КБ) полезных нагрузок. Cегодня, мы рады объявить о поддержке нового мобильного нажатия возможности, объявленные с iOS 8. Мы публикуем новый iOS 8 Пример приложения, демонстрирующий, как эти новые функции могут быть реализованы с SNS, а также реализовали поддержку более крупных полезных нагрузок на 2 КБ.

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

Ответ 11

см. мой тест здесь

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