А в старом надо было открывать 2 tcp-сокета:
В один шлешь пейлоды нотификаций (дублируя для каждого отдельного юзера, если это рассылка, т.е. допустим миллион раз) и одновременно слушаешь, а не стал ли он доступен для чтения, потому что если стал, то значит какой-то из пейлодов был невалиден и начиная с него все остальные, что ты успел отправить, не ушли. Причём эппл тебе только его индекс вернёт, поэтому держи буффер отправленных и потом высчитывай
Второй сокет нужен чтобы в него получать ошибки доставки, например когда у юзера сменился пуш-токен или он удалил аппку