Я не уверен, почему вы хотите запускать эту работу каждые 15 минут.Является ли этот временной интервал значимым для вашего приложения, или это произвольное число?В оставшейся части моего ответа я предполагаю последнее.
Вам необходимо создать фоновый процесс, который будет поддерживать постоянное соединение открытым для APNS.Это лучше, чем запускать вашу программу из задания cron, потому что установка SSL-соединения снова и снова стоит очень дорого.(Хотя, если вы действительно хотите придерживаться 15-минутного, я думаю, что запуск из задания cron не так уж и плох. Просто не открывайте и не закрывайте соединение для каждого уведомления, которое вы хотите отправить.)
Вместо отправки 1000 уведомлений каждые 15 минут, отправляйте 100 уведомлений каждую минуту.Или, скорее, отправлять несколько уведомлений каждую секунду.
Если вам нужно отправить много уведомлений, вы можете открыть несколько подключений к APNS для одного и того же приложения (но не более 15).
Для максимальной эффективности вы можете объединять несколько уведомлений в каждом пакете, который вы отправляете в APNS (например, с использованием алгоритма Nagle).