【问题标题】:Emoji does not display in push Notification instead it display question mark or display unicode表情符号不会显示在推送通知中,而是显示问号或显示 unicode
【发布时间】:2020-12-04 04:35:25
【问题描述】:

表情符号在推送通知中显示为 unicode 字符。即:如果我们有像“\ud83d\ude0a”这样的文本。这是 SMILE EMOJI 的代码,显示为 unicode 字符或有时在推送通知中显示问号。

在代码或服务器端还有什么需要做的吗? ?任何帮助,将不胜感激。我们在后端使用 java

Json 示例:

{
   "to": "c2rMPP0eK04Ro0FJDgMflH:APA91bEydhoB0VU5W6PxJLnIRoFqOk5npEjlWzBlvdyBlX1Cp72t0bYxDyepP5Z9mWFQ2XYeUPw8PDo3QqT6Anh27wqnkBRbabTYKn0tByOZOMU6oRlrGur-efxN9_-8LlOmDZceg9Kl",
   "notification": {
      "body": "Hello",
      "title": "This is done manually. \uD83D\uDE0A"
   }
}

我们试试这个东西

byte[] emojis = user.getEmoji().getBytes();
String emojisAsString = new String(emojis, StandardCharsets.UTF_8);
Integer emojiCodePoint = emojisAsString.codePointAt(emojisAsString.offsetByCodePoints(0,0));
char emojiChars[] = {Character.highSurrogate(emojiCodePoint), Character.lowSurrogate(emojiCodePoint)};

注意:如果我们从邮递员那里解雇这个东西,那么它可以工作但不是 从后端触发时工作

【问题讨论】:

  • 您能否向某些 http 端点(如 mockbin.org)发送请求以找出差异?喜欢curl -X POST mockbin.org/request -H 'Content-type: application/json' -d '{"emoji":"\uD83D\uDE0A"}'。由您的后端和邮递员发送请求。
  • 您用户的表情符号存储在哪里? user.getEmoji() 是什么类型的对象,您的数据库是否试图翻译和存储表情符号。您需要提供代码中的更多信息以及数据库的结构以获得准确的答案。

标签: java push-notification apple-push-notifications


【解决方案1】:

试试这个字符串:

"\u{D83D}\u{DE0A}"

【讨论】:

    【解决方案2】:

    如果您正在读取数据库,请尝试更新您的数据库驱动程序。就像使用 MySQL 一样,请使用 'mysql-connector-java:5.1.47' 或更高版本。

    【讨论】:

      【解决方案3】:

      “\uD83D\uDE0A”或“\u{D83D}\u{DE0A}”不是编码的表情符号。

      你应该像\u{}这样编码:

      "\u{1F600} \u{1F616}"
      

      参考链接:

      Emoji unicodes

      Unicode in iOS

      它在操场上工作。检查它是否适用于通知面板。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-09
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-21
        相关资源
        最近更新 更多