使用表情符号发送通知的最佳做法是什么?负载应该是什么样子?
是否需要在应用程序中进行任何解析才能正确显示表情符号,或者如果表情符号格式正确,它就可以开箱即用?
我尝试发送这个表情符号并尝试了各种格式:http://www.charbase.com/1f602-unicode-face-with-tears-of-joy
有效载荷看起来像这样:
"payload": {
"message": "U+1F602 \ud83d\ude02 😂 😂 f0 9f 98 82",
"title": "Hello",
"id": 123,
}
这是应用程序显示通知的方式:
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GCMPayload payload = new GCMPayload(
extras.getString("title"),
extras.getString("message"),
Strings.convertToLong(extras.getString("id")),
);
sendNotification(this, payload);
}
}
在 sendNotification 方法中,通知内容文本设置如下:
NotificationCompat.Builder builder =
new NotificationCompat.Builder(context)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setContentTitle(payload.getTitle())
.setContentText(payload.getMessage())
.setStyle(new NotificationCompat.BigTextStyle().bigText(payload.getMessage()));
不会显示表情符号,而是显示它们的代码。应该使用哪种编码?为了正确显示表情符号还需要做什么?
最佳答案
首先尝试在您的 Android 客户端 onMessageReceived
方法中对其进行硬编码:
String title = "Title \uD83D\uDE00";
...
.setContentTitle(title)
...
这将在通知标题中显示 Title 😀
。
如果一切正常,请尝试调试并观察 title
变量。您将在调试器中看到类似这样的内容:
0 = 'T' 84
1 = 'i' 105
2 = 't' 116
3 = 'l' 108
4 = 'e' 101
5 = ' ' 32
6 = '\uD83D' 55357
7 = '\uDE00' 56832
现在,删除 Android 客户端中的硬编码标题并尝试从您的服务器发送相同的文本。 在客户端验证您是否收到完全相同的字符,如果不是,则问题出在服务器编码上。
使用以下 folder from Google你可以让服务器运行:
Sender sender = new Sender("YOUR API KEY");
Message.Builder builder = new Message.Builder();
builder.addData("title", "Title \uD83D\uDE00");
sender.send(builder.build(), "YOUR DEVICE TOKEN", 5);
注意:更多表情可以试试这个site ,您可以在其中键入文本,单击表情符号,然后复制整个文本并将其粘贴到您的服务器上。
关于android - 在通知内容中显示表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599299/