Intereting Posts
как отправить push-уведомление с помощью phonegap и parse импортировать CSV-файл в postgres через php на веб-странице php echo результат при повторении через цикл Заполнение выпадающих ящиков при одновременном заполнении таблицы Проверка Laravel: обязательное условие обязательно_with_all Я хочу узнать простейший код обмена сообщениями, используя php Использование значения столбца как индекса массива в доктрине Facebook Graph API PHP SDK размещение на странице в виде страницы Mongo DB, PHP добавить или обновить поле в документе Массив с ассоциативным массивом – удаление дубликатов Отчеты проверки PHP. Селектор CSS не используется. Он используется эхом повторением тега PHP ссылка на подтверждение по электронной почте как yii getPost для массива _POST vars? «Сериализация« SimpleXMLElement »не допускается. Вставка ошибки в значение xml-кода сеанса Как избежать сообщения об отмене изменений композитора

Уведомление Apple Push: отправка больших объемов сообщений

Я использую PHP для подключения к apn s для отправки некоторых уведомлений на несколько устройств, хотя вопрос более концептуальен, поэтому он не должен быть специфичным для PHP.

В то же время я буду отправлять около 7000 устройств (и растет). Мой процесс выполняется один раз в день и транслируется на все устройства, поэтому я не постоянно повторно открываю соединение.

В настоящее время я могу легко отправить на 2 устройства одновременно, и сообщения будут успешно доставлены. Однако, когда я пытаюсь отправить все 7000 устройств, сообщения, похоже, не доставляются.

Псевдо-логика для моего кода:

 open connection to apple loop over device-tokens write to socket connection per device end loop close connection to apple. 

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

 loop over device tokens create payload aggregating all devices end loop open connection to apple write to socket ONCE with whole payload for 7000 devices close connection 

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

благодаря

Я читал, что Apple действительно заботится о количестве подключений, которые вы делаете к своим серверам, но я никогда не слышал о каких-либо ограничениях на запись. Кроме того, я не уверен, какой ответ вы получите здесь, но, возможно, стоит попробовать посмотреть, что произойдет. Возможно, экспериментируйте с сервером уведомлений на песочнице, используя только токены устройства. Эти телефоны не должны получать никаких push-уведомлений, отправленных на сервер песочницы, и если песочница сообщает «доставлено успешно», это будет беспроблемный способ тестирования.

Я вижу то, что вы хотите, и, скорее, я столкнулся с одной и той же проблемой, что для меня работало в обратном направлении. Я просто просмотрел библиотеку и проверил функцию, которая проверяет устройствоToken. Таким образом, при создании маркера фиктивного устройства я просто убедился, что сгенерированный токен действителен в соответствии с библиотекой.

Следующий код позволит вам генерировать действительные маркеры устройств, теперь это на вас, сколько миллионов токенов для генерации с использованием этой функции.

  def generateRandomDeviceTokenAndAppendItToJson(tokenLength: Int) { val randomlyGeneratedDeviceToken = new StringBuilder() randomlyGeneratedDeviceToken.append(" \"") (1 to tokenLength) foreach { times: Int => if (tokenLength equals Device.Apple) randomlyGeneratedDeviceToken.append(validCharacter().toString.charAt(0)) else randomlyGeneratedDeviceToken.append(Random.alphanumeric.head) } randomlyGeneratedDeviceToken.append("\",") println(randomlyGeneratedDeviceToken) writer.write(randomlyGeneratedDeviceToken.toString()) } private def validCharacter(): Int = { val a = Random.alphanumeric.head if ('0' <= a && a <= '9') return (a - '0') else if ('a' <= a && a <= 'f') return ((a - 'a') + 10) else if ('A' <= a && a <= 'F') return ((a - 'A') + 10) validCharacter() } 

Яблоко deviceToken имеет 64 символа, поэтому вам нужно будет повторять его в 64 раза.