|
отправка PUSH Уведомления с сервера PHP 5.6
|
|||
---|---|---|---|
#18+
Здравствуйте. Возникла необходимость реализовать PUSH уведомления для мобильного приложения, однако, пока не получыается отправить ни одного уведомления. С клиентской частью я вроде-бы закончил: Добавил в манифест необходимые опции, вызвал registerForRemoteNotifications, получил токен в application:didRegisterForRemoteNotificationsWithDeviceToken: (32 байта, которые я передал на свой сервер). Дальше хуже. На сервере будет приложение на PHP5 5.6, которое должно производить рассылку PUSH уведомлений. Сейчас я работаю с curl 7.52, но на самом сервере в данный момент есть только 5.19, который планируется впоследствии обновить (если предложите вариант без curl то это ещё лучше). Мне нужно выполнить запрос к APNs серверу по протоколу HTTP/2 и передать ему уведомление. Для проверки подлинности я выбрал вариант JWT токена, в котором я указал необходимые параметры: заголовок alg:ES256, kid:xxxxxxxxxx (Это ведь key ID из ключа APNs Auth Key?) тело iss:xxxxxxxxxx (Это token моего сертификата разработчика?) iat: (текущий timestamp). Подписал всё это своим закрытым ключом (действовал через библиотеку Namshi\JOSE). После этого я устанавливаю следующие параметры для cURL: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если этот запрос отправить на выполнение, то я получу от APNs следующий ответ: Код: plaintext 1.
Apple описывает ошибку следующим образом: The specified device token was bad. Verify that the request contains a valid token and that the token matches the environment. Как я могу проверить, что токен правильный? Что за среда? Я использую development сертификат для разработки, возможно, в настройках разрабатываемого приложения нужно что-то изменить? Или формат токена неправильный? Но это половина беды. Меня беспокоит, что curl для передачи запроса не использует HTTP/2 (или при каждом запросе делает upgrade протокола, но не сообщает уже мне об этом). Вот выхлоп заголовков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
Это только вывод результата запроса и заголовки самого запроса (не тело). Получить в более детальную информацию я не могу, потому как общение происходит через https и получить декодированные HTTP/2 запросы не получится. Как видно, используется версия протокола HTTP/1.1 (по крайней мере для отправки первого запроса). Можно ли на PHP 5.6 сразу отправить запрос по протоколу HTTP/2? Я смотрел в сторону сторонних библиотек вроде guzzle/guzzle, но они работают поверх curl и в них просто выполняется проверка на наличие PHP 7.1 для отправки HTTP/2 без повышения версии протокола. Ещё раз напомню, что вопросов два: Как обойти ошибку BadDeviceToken и начать общение с сервером по протоколу HTTP/2? Если последнее невозможно, то нужно ли переживать, будут ли проблемы при работе с production сервером APNs? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 15:41 |
|
|
start [/forum/topic.php?fid=10&gotolast=1&tid=1329556]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 123ms |
0 / 0 |