8

我正在开发名为“INTERSTIZIO”的 iPhone 应用程序。在此我实现了用户之间聊天等功能。在此用户可以发送文本、位置和带有表情符号的文本。如果应用程序在接收端未处于打开模式,则从后端推送已生成并显示给接收者。我可以在推送中显示消息,如“用户名:你好......”但我也想在推送消息中显示表情符号,如“用户名:Hay :)”,所以任何人都有关于如何使用苹果的表情符号代码(如微笑苹果代码是 \u263a)实现这种类型的推送消息?

我遵循了此链接中给出的解决方案: http: //code.iamcal.com/php/emoji/ 但它返回的代码与我在函数中传递的代码相同。它在网页上工作正常,但在推送消息中却不行。

在这里,我附上了一张推送它在我的结尾的屏幕截图。在其中你可以看到我已经显示了笑脸和照明符号,但它使用 HTML 支持的代码显示,如下面的 PHP 脚本代码:

$lightning = html_entity_decode('',ENT_NOQUOTES,'UTF-8');  
//add this to the 'alert' portion of your APNS payload:  
$message = "You just got the {$lightning}SHOCKER{$lightning}!";

但在我的情况下,我已经显示了来自苹果的内置表情符号键盘,并使用下面的代码我可以获得表情符号代码:

//store code of emojis at backend  
NSData *data = [txtspeech.text dataUsingEncoding:NSNonLossyASCIIStringEncoding];  
NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//Display emojis in mobile chat window
NSData *data = [objchat.strchat dataUsingEncoding:NSUTF8StringEncoding];  
NSString *valueEmoj = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];  
cell.txtchat.text=valueEmoj;

使用上面的代码,我可以在聊天窗口中存储和显示表情符号,但如果接收者用户关闭了应用程序,那么在推送消息中我无法在推送消息中显示表情符号。

谢谢

在此处输入图像描述

4

2 回答 2

5

你不应该搞乱 html 解码。正如你所说的笑脸的代码点是\u263A。在 PHP 中,您可以将 UTF8 编码的字符串表示为"\xE2\x98\xBA"

闪电(实际上是“高压标志”)是UTF-8\u26A1"\xE2\x9A\xA1"UTF-8。

这两个字符都作为常规 Unicode 符号出现在一些非表情符号字体中。你可以看到:

<?php
header('Content-type: text/html; charset=utf-8');
echo "\xE2\x9A\xA1";
echo "\xE2\x98\xBA";

我不知道你从哪里得到的&#57661;来自,但那将\ue13d是在一个空的私人使用 Unicode 范围内,而不是 Unicode 标准中的表情符号在此处检查它可能来自其他一些日本移动运营商标准,但对于 iOS,您应该使用 Unicode。

你可以从这个表中得到我上面的编码或者使用这个表情符号搜索工具

至于苹果推。该注释说您可以将表情符号作为 UTF-8 编码字符串发送,因此{"alert":"\u26A1SHOCKER\u26A1"}听起来像它的 json 对象会起作用。

于 2013-05-22T14:50:00.307 回答
1

对于谷歌人。json_encode() 添加双 \

$message = "\ue04a";
$body['aps'] = array(
                   'alert' => $message,
                   'sound' => 'default',
                   'type'  => $type,
                   'param' => $param
               );

$payload = json_encode($body);
$payload = str_replace("\", "\\", $payload);
于 2016-02-04T10:27:07.627 回答