2013-02-12 3 views
0

У меня есть приложение на стороне сервера, которое отправляет массовые push-сообщения на сервер apple. Недавно я получаю несколько SSLSocketException: соединение закрыто удаленным хостом ИЛИ SSLSocketException: Рассмотрены неисправности трубок.Подтвердить токен APN

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

Есть ли какой-либо алгоритм или способ знать, почему токен устройства «недействителен»?

ответ

2

Почему маркер устройства недействителен?

Предполагая, что у вас есть все маркеры вашего устройства от Apple и не создаются фиктивные маркеры, наиболее вероятной причиной недействительных токенов является DB, в котором есть как токены, так и маркеры для песочницы.

Как узнать, какие маркеры являются недопустимыми:

Вы должны использовать расширенный формат APN, в котором указать идентификатор сообщения. После каждого сообщения, которое вы отправляете в Apple, вы должны попробовать прочитать из сокета после установки таймаута на достаточно большое значение. Apple отправит вам ответы об ошибках для недействительных токенов, которые указывают идентификатор сообщения. Это позволит вам найти недействительные токены и удалить их из вашей базы данных. Обратите внимание, что вы должны использовать этот метод (чтение ответов после каждого сообщения с большим таймаутом), чтобы очистить вашу БД. После того, как ваша БД чиста из недействительных токенов, вы не хотите ее использовать, так как это сделает доставку уведомлений очень медленной.

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