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

Какова максимальная длина текстового сообщения оповещения iOS?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OLD ANSWER: Согласно документу apple полезная нагрузка для 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, даже в производственных конфигурациях

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

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

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

Источник: http://asciiwwdc.com/2014/sessions/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 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 (APN) отказывается от любого уведомления, которое превышает максимальный размер».

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

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

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

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

  • Push Notification Issue в Adhoc Distribution
  • Google push-уведомление не работает в производстве
  • Лучший способ реализовать push-уведомления с Firebase
  • iOS 8.1 Push Notification No Sound
  • Как установить звуковые сигналы системы iOS в качестве звукового уведомления, например Whatsapp
  • Apple Watch OS 2 как показать / скрыть кнопку действия из пользовательского уведомления
  • iphone push-уведомления с использованием москитов
  • iOS. Невозможно использовать сертификат APNS для создания нового профиля подготовки.
  • Сервис Web с APNS, обслуживающим два приложения = два сертификата?
  • didRegisterForRemoteNotificationsWithDeviceToken называется дважды?
  • Пакетный / множественный код уведомления iOS Push - работает для 2 устройств, но не для 100
  • Давайте будем гением компьютера.