Плохая полезная нагрузка для некоторых токенов
У меня возникли проблемы со скриптом push-уведомлений на PHP, но это зависит от токена.
У меня есть несколько токенов, которые после преобразования (с помощью pack()), похоже, находятся в 2 строках.
Поэтому, когда я пишу в сокете, вся остальная часть моего пакета не получает толчок.
Я попробовал очень простой скрипт с 4 токенами.
У меня есть очень странный токен: "2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7" когда я пытаюсь отправить push на этот, ничего отправляются.
Если я помещу этот токен в конец, первый токен получит толчок, если я помещу его во вторую позицию, только первое устройство получит толчок....
Когда я отлаживаю, я вижу разрыв строки, но я не уверен, что это проблема
Token : string(64) "2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7"
Concersion: string(131) " /�"9�^G7�����h��I�S
���e_�^{"aps":{"alert":"Xxxxx XX - Test - Push"},"main_node_id":"756516","contentobject_id":"634997"}"
Token: string(64) "b0ddb6a64fb546494d14759d1f62050fa6bab81a8bd34a2448eb9c6a650adc21"
Conversion: string(131) " ��O�FIMu�b�����J$H�je
�!^{"aps":{"alert":"Xxxxx XX - Test - Push"},"main_node_id":"756516","contentobject_id":"634997"}"
Token : string(64) "3a7c392fc642b946a5604579ef3fce8174dcb9eb70688d9d429ab3000427638a"
Conversion: string(131) " :|9/�B�F�`Ey�?tܹ�ph��B��'c�^{"aps":{"alert":"Xxxxx XX - Test - Push"},"main_node_id":"756516","contentobject_id":"634997"}"
Token : string(64) "2a4c36091a2169d1276e14d657b8d58a98b8a10b0376980adb8706ff87737ee4"
Conversion: string(131) " *L6 !i�'n�W�Պ���
v�
ۇ��s~�^{"aps":{"alert":"Xxxxx XX - Test - Push"},"main_node_id":"756516","contentobject_id":"634997"}"
Вот моя функция PHP для создания пакета, отправляемого в сокет: (я пробовал использовать другую библиотеку.. это было то же самое)
protected function _buildPacket( array $body, $token ) {
$payload = json_encode( $body );
return chr( 0 ) . pack( "n", 32 ) . pack( 'H*', str_replace( ' ', '', $token ) ) . pack( "n", strlen( $payload ) ) . $payload;
}
Вы уже видели это?
Обратите внимание, что я повторно использую то же самое сокет, значит, этот токен что-то ломает, но я не понимаю, что именно.
Спасибо за вашу помощь
1 answers
Согласно тому, что вы описываете, маркер 2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7
недействителен. Возможно, это токен изолированной среды, и вы используете его для переноса в производственную среду или наоборот.
Когда вы отправляете push-уведомление с недопустимым маркером устройства на сервер APNS, Apple возвращает ответ об ошибке (если вы используете более новый двоичный формат) и закрывает сокет. Поэтому любые сообщения, которые были отправлены через тот же сокет после сообщения с недопустимым токеном, будут отброшены, и необходимо будьте возмущены через новую розетку. Вот почему вы сталкиваетесь с разными результатами в зависимости от порядка сообщений.
Прочитайте больше об обработке ошибок в Push-уведомлениях Apple здесь.