4

Какова наилучшая практика отправки уведомлений с помощью emoji, как должна выглядеть полезная нагрузка?Отображение emojis в содержании уведомления

Существует ли какой-либо синтаксический разбор в приложении для правильного отображения emojis, или он просто работает из коробки, если emojis отформатирован правильно?

Я попытался отправить этот смайлик и попробовали различные форматы: 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())); 

Эможи не отображаются, отображаются их коды. Какую кодировку следует использовать? Что еще нужно сделать, чтобы правильно отобразить emojis?

+0

Возможный дубликат [show-emoji-on-notifi cation-like-whatsapp] (http://stackoverflow.com/questions/24764723/show-emoji-on-notification-like-whatsapp) – gerardnimo

ответ

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

Пробовал это через firebase, он не работает. –

+0

Что вы попробовали? – fernandospr

1

Добавьте ресурс, как следует:

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

В Android Studio 3.0 вы можете скопировать и вставить смайлик:

Emoji

А вот как это выглядит:

Emoji

Смежные вопросы