Проблема была не в количестве устройств, отправляемых в APNS. Проблема оказалась в том, что Apple изменила свой API. Теперь вам нужно проверить каждое устройство, чтобы убедиться, что оно все еще действует (то есть, если они запрещают push-уведомления, если устройство удалило приложение и т. Д.). Если устройство больше не принимает push-уведомления от вашего приложения, и вы все равно отправляете ему уведомление, Apple немедленно прекращает подключение к вашему гнезду APNS. Теперь у меня есть cronjob, который запускает программу один раз в день, которая проверяет и удаляет любые устройства из моей базы данных, которые больше не принимают push-уведомления (у Apple есть этот список). Но будьте осторожны - как только вы извлекаете список отключенных идентификаторов устройств от Apple, Apple удаляет их со своего сервера, и вы можете никогда извлекать его снова.
Вам также необходимо обновить код push-уведомлений, чтобы проверить, не разорвано ли соединение. Когда соединение разорвано, программе необходимо восстановить соединение и повторить попытку.