【问题标题】:Displaying emojis in notification's content在通知内容中显示表情符号
【发布时间】:2017-10-30 17:42:32
【问题描述】:

使用表情符号发送通知的最佳做法是什么,有效负载应该是什么样子?

是否需要在应用程序中进行任何解析才能正确显示表情符号,或者如果表情符号格式正确,它可以开箱即用?

我尝试发送这个表情符号并尝试了各种格式:http://www.charbase.com/1f602-unicode-face-with-tears-of-joy

payload 看起来像这样:

 "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 notifications push-notification google-cloud-messaging emoji


【解决方案1】:

首先尝试在您的 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,您可以在其中键入文本,单击一个表情符号,然后复制整个文本并将其粘贴到您的服务器上。

【讨论】:

  • 你尝试了什么?
【解决方案2】:

添加资源如下:

<string name="string_title">This is a emoji example <U+1F642></string>

在 Android Studio 3.0 中,您可以复制和粘贴表情符号:

它的外观如下:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 2020-12-04
    • 2011-03-21
    • 2012-07-22
    • 2016-04-13
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多