2015-01-23 2 views
0

В настоящее время я настроил приложение, которое получает push-сообщения от Amazon SNS (который отлично работает). На стороне PHP, я использую обычный JSON-подобный полезный груз, который идет как это:German Umlaut/Специальные символы в userInfo NSDictionary

'aps' => array(
        'content-available' => 1, 
        'alert' => array('body' => 'Text with or without Umlaut (ÄÖÜ)'), 
        'badge' => 1, 
        'sound' => 'default' 
       ) 

Так что мой вопрос: Если я отправить уведомление, содержащие Умляуты (а, о, и), на принудительный значок в верхняя часть отображает текст правильно при получении этого. Однако в моем приложении нет: он принимает < null>. я обрабатывать сообщения в обычном didreceveive ...

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 

Так я зарегистрировал полученный словарь USERINFO как первое, что в этом методе, и здесь я получил:

NSLog(@"userInfo=%@",userInfo); 


alert =   { 
     body = "<null>"; 
    }; 
    badge = 1; 
    "content-available" = 1; 
    sound = default; 

Без umlauts- это работает отлично! Нет никаких вопросов относительно этого, и именно поэтому я был бы признателен за любой ввод прямо сейчас ...

Заранее благодарен!

+0

и если ваша отправка уведомлений без немецких умляутов (Умляуты hört Сечи Фолля seltsam в Englisch: D) делает эту работу? Или вы получаете те же/другие ошибки? – Krummy

+0

Привет, Крумми, да, именно в этом проблема - она ​​работает на 100% без этих умляутов! Перевод в соответствии с dict.cc является «особым символом». ;) – Roman

+0

вы можете попробовать установить «charset» внутри заголовка (есть возможности для html, php, android и т. Д. Вам может понадобиться google it: D). Примером может служить заголовок Krummy

ответ

0

Посмотрите на это article on stackoverflow. Оба решения, которые я публикую, есть с некоторыми комментариями. Хоп это помогает вам.

Решение 1:

Вы можете определить тип документа с UTF-8 кодировкой (как написано в комментарии Кур вопрос):

<?php header('Content-Type: application/json; charset=utf-8'); ?> 

Убедитесь, что все содержимое utf_encoded. JSON работает только с utf-8!

function encode_items(&$item, $key) 
{ 
    $item = utf8_encode($item); 
} 
array_walk_recursive($rows, 'encode_items'); 

Решение 2:

Другим решением было бы использовать htmlentities().

<?php 
    $test = array('bla' => 'äöü'); 
    $test['bla'] = htmlentities($test['bla']); 

    echo json_encode($test); 
?> 
+0

Спасибо, это было очень полезно! Чтобы подвести итог, я объявил все строки, которые будут отправляться через apns следующим образом: $ push_title = utf8_encode («Заголовок с или без Umlaut ÜÖÄ»); ==> сама система отображает их правильно, я просто не сразу понял это - я только посмотрел на консоль и печатает чистый UTF .... не позволяйте консоли заставлять вас делать больше работы! – Roman

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