Вы должны проверять ответную реакцию каждый раз, когда отправляете push и удаляете неактивные устройства. Хотя сейчас это не похоже на твою проблему.
Ваша проблема выглядит так, как будто в вашей базе данных есть недействительных токенов. Apple прервет ваше соединение, если вы отправите недействительных токенов. Отправка неактивного токена не будет иметь никакого эффекта, но если вы отправите неверный / недействительный токен, Apple уничтожит ваш сокет.
Другая проблема может заключаться в отсутствии схемы повторных попыток на вашей стороне. Реализовали ли вы какую-либо процедуру, которая снова откроет соединение с Apple, если оно разорвется во время нажатия? Вы должны предсказать, что соединение может потерпеть неудачу, и если это произойдет, вы должны восстановить его и снова начать проталкивать с того места, где остановились.
То, что вы должны искать, это:
- Убедитесь, что в вашей базе данных есть только VALID токены
- Убедитесь, что у вас есть схема повторов
- Взгляните на Notnoop , это очень простой Java API, который много для вас обрабатывает