2014-03-01 6 views
0

Хулло, Посылает уведомление толчка с помощью этого PHP фрагмента:IOS Нажмите уведомление в кириллической

// Build the binary notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

// Send it to the server 
$result = fwrite($fp, $msg, strlen($msg)); 

он прекрасно работает и хорошо с латинскими языками, но, когда я пытаюсь отправить уведомление из России, ничего прибывает, несмотря на то, что журналы подтверждают правильную доставку.

уведомит [email protected] для языка RU субботу 1 марта 2014 8:15:59 PM уведомить 246e2e720c0f307ef3887922d72b6b6886fa19b44b6dbae7cda8913fe149958e кон Ваше активное бронирование было прервана пользователем. Dopo * * *:/вар/WWW/HTML/PHP/PUSH/такси/распределение/ck.pem deviceToken: 246e2e720c0f307ef3887922d72b6b6886fa19b44b6dbae7cda8913fe149958eConnected к APNS invio полезная нагрузка { "АПС": { "бдительные": "\ u0412 \ u0430 \ u0448 \ u0435 \ u0430 \ u043a \ u0442 \ u0438 \ u0432 \ u043d \ u043e \ u0435 \ u0431 \ u0440 \ u043e \ u043d \ u0438 \ u0440 \ u043e \ u0432 \ u0430 \ u043d \ u0438 \ u0435 \ u0431 \ u044b \ u043b \ u043e \ u043f \ u0440 \ u0435 \ u0440 \ u0432 \ u0430 \ u043d \ u0430 \ u043f \ u043e \ u043b \ u044c \ u0437 \ u043e \ u0432 \ u0430 \ u0442 \ u0435 \ u043b \ u0435 \ u043c. "," sound ":" default "}} Сообщение успешно доставлено Я читал о проблемах по длине пакета, но на обеих фазах он вычисляет его wh ile отправки сообщения, и поэтому он должен быть правильной длины. Любая идея о том, что делать, чтобы исправить это?

+0

Вы пытались отправить только один или два символа кириллицы? – Nick

+0

На самом деле по какой-то странной причине иногда приходит уведомление, но когда это происходит, оно состоит только из вопросительных знаков и пробелов последовательности, например, если конвертация UTF8 была потеряна в Apple. Я попытаюсь опубликовать несколько символов, чтобы узнать, не изменилось ли оно. –

+0

На самом деле, только слово «Время» проходит, может быть, проблема длины при преобразовании или что? И в этом случае какой-либо опыт максимальной? –

ответ

0

Ваш код выглядит хорошо, и я склоняюсь к проблеме «размера». Попробуйте использовать mb_strlen в коде вместо strlen, поскольку strlen не может точно рассчитать длину многобайтовых символов.

+0

Спасибо, я сделал это: // Создаем двоичное уведомление \t $ msg = chr (0). pack ('n', 32). pack ('H *', $ deviceToken). pack ('n', mb_strlen ($ payload)). $ Полезной нагрузки; // Отправьте его на сервер \t $ result = fwrite ($ fp, $ msg, mb_strlen ($ msg)); но все равно нет никакого сообщения: это раздел полезной нагрузки: полезная нагрузка {"aps": {"alert": "\ u041a \ u043e \ u043c \ u043f \ u043b \ u0438 \ u043c \ u0435 \ u043d \ u0442 \ u043c \ u043c \ u043c \ u0435 \ u043d \ u0442 \ u044b! \ u0417 \ u0430 \ u043a \ u0430 \ u0437 \ u0430 \ u043d \ u043d \ u043e \ u0435 \ u0442 \ u0430 \ u043a \ u0441 \ u0438 \ u043f. "," sound ":" default "}} Сообщение успешно доставлено; подтверждая правильную доставку. –

+0

На самом деле я установил кодировку utf-8, и теперь она работает до определенной длины. Это самая длинная строка, которую я могу успешно доставить: Комплименты! Заказанное такси принято бр. Если я добавлю еще один символ, ничего не придет. Я подозреваю, что каждый кириллический персонаж занимает больше байтов, чем латинские языки, и, таким образом, превышая определенную общую длину, фактическое занятие превышает аллотмент, странно не возвращающее ошибки. Может кто-то подтвердить это чувство? Это также открывает банку червей с такими языками, как китайцы. –

+0

Большинство нелатинских букв будут потреблять до 4 байтов каждый (значительно больше латинских букв), что на самом деле означает, что длина полезной нагрузки будет меньше. Пока этот 256-байтовый предел на месте, вы застряли :( – Nick

0

Я думаю, что оптимальным решением является отправка английских строк и их локализация в приложении. Единственным сокращением является то, что вам необходимо отправлять обновления каждый раз, когда вы хотите добавить новый тип уведомления.

Смежные вопросы