userInfo NSDictionary中的德语变音符号/特殊字符

时间:2015-01-23 14:15:29

标签: objective-c apple-push-notifications

我目前正在设置一个应用程序,它接收来自Amazon SNS的推送消息(工作正常)。 在PHP方面,我使用一个类似于JSON的普通有效载荷:

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

所以我的问题是:如果我发送包含变音符号(Ä,Ö,Ü)的通知,则上部的推送徽章会在收到该文本时正确显示文本。 但是,我的应用程序没有:收到<零取代。 我以正常的方式处理消息......

- (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;

没有变音符号 - 它运行正常! 关于这一点没有任何问题,这就是为什么我现在感谢任何输入......

提前致谢!

1 个答案:

答案 0 :(得分:0)

看看这个article on stackoverflow。我发布的两个解决方案都有一些评论。跳它可以帮助你。

解决方案1:

您可以使用utf-8字符集定义文档类型(如写在qour问题的评论中一样):

<?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 );
?>