it-swarm.com.ru

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

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

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

136
hpique

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

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

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

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

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

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

232
ascandroli

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

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

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

26
Anurag

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

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

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

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

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

15
William Denniss

Правка:

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

Максимально допустимый размер полезной нагрузки уведомления зависит от того, какой 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 килобайта; Apple Служба push-уведомлений отклоняет любое уведомление, превышающее этот лимит. (До iOS 8 и в OS X максимальный размер полезной нагрузки составлял 256 байт.)

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

11
jcesarmobile

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

AlertBannerNotification Center

10
Loozie

Для обычных удаленных уведомлений максимальный размер составляет 4 КБ (4096 байт) https://developer.Apple.com/library/content/ документация/NetworkingInternet/Концептуальный/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 КБ.

7
Elenasys

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

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

5
klefevre

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

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

1
Burak

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

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

1
SaRaVaNaN DM

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()
1
Philip Fung

смотри мой тест здесь

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

0
firebear