2

Я не знаю, как спросить их, но, надеюсь, я могу заставить себя достаточно ясно для вас, чтобы понять мои вопросыApple, вопросы толчок уведомления

  1. Предел сообщение 256. Но что сообщение, которое я нужно наложить этот предел? Сначала я подумал, что речь идет о размере json. Но, просмотрев код zend use и другие, которые используют push-уведомление, дополнительная информация отправляется через полезную нагрузку (json - 256, но отправляемая полезная нагрузка - 270). Должен ли я ограничить json до 240 или меньше?

  2. Что произойдет, если более чем одно сообщение имеет тот же идентификатор (я не говорю о идентификаторе устройства)

  3. Как быстро я могу послать второе сообщение к одному устройству? У меня есть некоторые проблемы, когда приходит только одно сообщение.

Я использую метку времени для Id, поэтому мне было интересно, если это является причиной моей проблемы или, может быть, я не могу отправить 5 сообщений в том же seccond к одному устройству.

ответ

1

Ну, ограничение 256 байт находится на двоичном представлении полезной нагрузки JSON (токен устройства, а также другие заголовки не включены в этот счет). Это означает, что вы можете отправить строку JSON с 256 символами, если вы используете только символы, которым требуется одиночный байт в кодировке UTF-8. Если вы отправляете текст на языках, чьи символы требуют более одного байта, у вас будет место меньше символов в вашей полезной нагрузке. Я протестировал его, и так оно и происходит.

Что касается отправки нескольких сообщений с одним и тем же идентификатором, это приведет к поражению цели идентификатора сообщения. Когда Apple сталкивается с некоторой ошибкой в ​​вашем сообщении (например, недействительным токеном устройства), он отправляет ответ об ошибке, содержащий указанный вами идентификатор сообщения. Если вы отправляете несколько сообщений с одинаковым идентификатором, вы не сможете узнать, какое сообщение вызывает ответ об ошибке.

+0

Ty, я проверил ограничение байтов, и вы правы. И я не знал, для чего используется идентификатор. Но я использую сертификат разработки и, похоже, не получаю ошибок даже с недопустимым токеном .... –

+0

@ChiosaIonut Возможно, есть проблема с кодом чтения с ошибкой. Иногда вы можете не прочитать ответ об ошибке (если вы отправляете много сообщений и только затем пытаетесь прочитать ответы из сокета, сокет может быть закрыт Apple, прежде чем вы сможете прочитать ответ). Чтобы убедиться, что вы получили ответ об ошибке, попробуйте отправить только одно сообщение с недопустимым токеном, а затем попытайтесь прочитать из входного потока сокета (с достаточно длинным таймаутом). – Eran

+0

Да, с половиной второго таймаута это работает. Но как я могу проверить ошибки?Нужен ли мне тайм-аут для каждого отправленного сообщения? –

2

От Apple Developer site:

Уведомление Payload

Каждый толчок уведомление включает в себя полезную нагрузку. Полезная информация содержит информацию о том, как система должна предупреждать пользователя, а также любые предоставленные вами пользовательские данные. Максимальный размер, разрешенный для уведомления , составляет 256 байт; Служба уведомления Apple Push отказывается от любого уведомления , которое превышает этот предел.

Ограничение на полную полезную нагрузку, что означает JSON + ваше сообщение. Поэтому ваше сообщение должно быть ограничено 236 символами, а затем добавить число символов следующего JSON: {"aps":{"alert":""}}.

Как быстро я могу отправить второе сообщение на одно и то же устройство? У меня есть некоторые проблемы, из которых приходит только 1 сообщение.

Нет никаких ограничений на отправку сообщений на одно устройство. Тем не менее, Apple не гарантирует доставку всех ваших сообщений, и APNS может доставлять только самое последнее push-уведомление устройства на случай, если несколько сообщений были получены из одного приложения, которое предназначено на том же устройстве.

От iOS Developer Library:

Некоторые Уведомления полученных, но не все

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

Вот почему. Устройство или компьютер подтверждают получение каждого уведомления .До тех пор, пока услуга push не получит это подтверждение, может только предположить, что устройство или компьютер перешли в автономный режим для некоторой причины и сохраняют уведомление в очереди качества обслуживания (QoS) для последующей доставки. Задержка междугородной сети здесь составляет курс основного фактора.

Как описано в Руководстве по программированию локальных и push-уведомлений, в очереди QoS содержится одно уведомление для каждого устройства или компьютера. Если служба получает другое уведомление перед отправкой очереди в , новое уведомление перезаписывает предыдущее.

Благодаря Joachim Isaksson за предоставление указанной ссылки.

+0

+1 [и вот некоторые дополнительные документы] (http://developer.apple.com/library/ios/#technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG23) на нескольких сообщениях. –

+0

wow, ty для вашего быстрого ответа, но вы не отвечали на мои вопросы, я никогда не спрашивал, какой максимальный размер для пользовательского сообщения. Наряду с сообщением json вы отправляете дополнительные данные, такие как токен, длина сообщения, id, expiration ... Я хотел знать, включено ли это в ограничение на 256 байт –

+0

@ChiosaIonut Я ответил на ваш вопрос, что ограничение на 256 байтов включено полезная нагрузка (что также упоминается на сайте Apple). Также см. [Примеры полезной нагрузки] (http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW15) на том же сайте, он показывает только JSON и не говорит о токенах, истечении срока и т. д. –

Смежные вопросы