Какова максимальная длина текста предупреждения Push-уведомления?
какова максимальная длина текста предупреждения push-уведомления iOS?
на документация заявляет, что полезная нагрузка уведомления должна быть меньше 256 байт в общей сложности, но, конечно, должен быть определенный предел символов для текста предупреждения.
11 ответов
реальные ограничения для текста предупреждения нигде не документированы. Единственное информация - это:
в 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.
предел уведомлений расширенного формата -документы.
в нем явно указано:
полезная нагрузка не должна превышать 256 байт и не должна иметь нулевого завершения.
ascandroli претензии выше что они могли отправлять сообщения с 1400 символами. Мое собственное тестирование с новым форматом уведомлений показало, что сообщение всего на 1 байт выше 256 байтов было отклонено. Учитывая, что документы are очень явные в этом пункте я предлагаю безопаснее использовать 256 независимо от того, что вы можете достичь экспериментально, поскольку нет никакой гарантии, что Apple не изменит его на 256 в будущем.
Что касается самого текста предупреждения, если вы можете поместить его в общий размер полезной нагрузки 256, то он будет отображаться iOS. Они усекают сообщение, которое отображается в строке состояния, но если вы откроете Центр уведомлений, все сообщение будет там. Он даже отображает newline персонажи \n
.
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 Notification сервис отказывается от любого уведомления, превышающего этот лимит. (До iOS 8 и в OS X максимальный размер полезной нагрузки составляет 256 байт.)
но я протестировал, и вы также можете отправить 2 килобайта на устройства iOS 7, даже в производственных конфигурациях
для обычных удаленных уведомлений максимальный размер -4KB (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-уведомлений-interactive push уведомления, сторонние виджеты и большие (2 КБ) полезные нагрузки. Сегодня, мы рады сообщить о поддержке нового mobile push возможности, объявленные с iOS 8. Мы публикуем новый iOS 8 Пример приложения, демонстрирующего, как эти новые функции могут быть реализованы с SNS, а также реализовали поддержку для больших 2KB полезная нагрузка.
согласно WWDC 713_hd_whats_new_in_ios_notifications. Предыдущий предел размера 256 байт для полезной нагрузки толчка теперь было увеличено до 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 (проверьте дату моего ответа):
"... При использовании API поставщика HTTP/2 Максимальный размер полезной нагрузки составляет 4096 байты. Используя устаревший двоичный интерфейс, максимальный размер полезной нагрузки составляет 2048 байты. Служба Push-уведомлений Apple (APNs) отказывается от любых уведомлений это превышает максимальный размер."
Apple Обновил Doc:
каждое удаленное уведомление включает полезную нагрузку. Полезная нагрузка содержит информацию о том, как система должна предупредить пользователя, а также любые пользовательские данные, которые вы предоставляете. Максимальный размер полезной нагрузки уведомления зависит от используемого API поставщика. при использовании API поставщика HTTP/2 Максимальный размер полезной нагрузки составляет 4096 байт. С помощью устаревший двоичный интерфейс, максимальный размер полезной нагрузки составляет 2048 байт. Яблоко Пуш Служба уведомлений (APNs) отклоняет любое уведомление, превышающее максимальный размер.
посмотреть мой тест здесь
Я мог бы отправить до 33 китайских символов и 13 байтов пользовательских значений.