android - 在通知内容中显示表情符号

标签 android notifications push-notification google-cloud-messaging emoji

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

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

我尝试发送这个表情符号并尝试了各种格式: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/

相关文章:

android - 华为 EMUI 8 Oreo - 通知 channel - 提示音

android - 从服务器检查设备可用性的最佳方法是什么

linux - Go通知macOS

android - 具有多个 ViewModel 的 Activity

android - 未调用我的 AsyncTask 的 onPreExecute/onPostExecute

android - 基本 Java/Eclipse 问题 : standard libraries cannot be imported in Android project

ios - iOS 10 中的远程通知

java - froyo 上的阿拉伯语?

cocoa - 如何防止递归 KVO 通知?

ios - 来自网络的 NSNotifications