我目前正在设置一个应用程序,它接收来自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;
没有变音符号 - 它运行正常! 关于这一点没有任何问题,这就是为什么我现在感谢任何输入......
提前致谢!
答案 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 );
?>