Реальные ограничения для текста предупреждения нигде не задокументированы. Единственное, о чем говорится в документации :
В iOS 8 и более поздних версиях максимальный размер полезной нагрузки уведомления составляет 2 килобайта; Служба push-уведомлений Apple отклоняет любые уведомления, превышающие этот предел. (До 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 может быть меньше.
источник
Предел уведомлений в расширенном формате задокументирован здесь .
В нем прямо говорится:
ascandroli утверждает выше, что они могли отправлять сообщения с 1400 символами. Мое собственное тестирование с новым форматом уведомлений показало, что сообщение, превышающее ограничение в 256 байт, было отклонено. Учитывая, что в документации очень четко указано на этот момент, я предлагаю безопаснее использовать 256, независимо от того, что вы можете достичь экспериментально, поскольку нет гарантии, что Apple не изменит его на 256 в будущем.
Что касается самого текста предупреждения, если вы можете уместить его в общий размер полезной нагрузки 256, он будет отображаться iOS. Они усекают сообщение, которое отображается в строке состояния, но если вы откроете центр уведомлений, все сообщение будет там. Он даже отображает символы новой строки
\n
.источник
РЕДАКТИРОВАТЬ:
Обновление ответа последней информацией
Максимальный размер, разрешенный для полезной нагрузки уведомления, зависит от того, какой 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-) символов.
Но я протестировал, и вы также можете отправить 2 килобайта на устройства iOS 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
источник
Согласно 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 (проверьте дату моего ответа):
источник
Обновленный документ Apple:
Каждое удаленное уведомление включает полезную нагрузку. Полезная нагрузка содержит информацию о том, как система должна предупреждать пользователя, а также любые пользовательские данные, которые вы предоставляете. Максимальный размер, разрешенный для полезных данных уведомления, зависит от того, какой API поставщика вы используете. При использовании API провайдера HTTP / 2 максимальный размер полезной нагрузки составляет 4096 байт . При использовании устаревшего двоичного интерфейса максимальный размер полезной нагрузки составляет 2048 байтов. Служба Apple Push Notification (APN) отклоняет любые уведомления, размер которых превышает максимальный.
источник
см. мой тест здесь
Я мог отправить до 33 китайских символов и 13 байтов пользовательских значений.
источник