J'ai un Servlet déployé sur Google App Engine, qui joue le rôle d'envoyer un message en diffusion à GCM. Les clients Android recevront ce message en diffusion depuis GCM. Le Servlet étend BaseServlet avec l'extrait suivant.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Lors de la réception d'une requête de diffusion GCM, envoyer un message à GCM
Builder mb = new Message.Builder();
mb.addData("message", "Le message à envoyer");
Message message = mb.build();
sender.sendNoRetry(message, regIds);
...
}
Quand "le message à envoyer" est en anglais, tout va bien. Mais si "le message à envoyer" est remplacé par une autre langue comme le chinois, le client Android recevra une chaîne de texte illisible. Sur le client Android, j'utilise une classe étend GCMBaseIntentService pour traiter la diffusion GCM.
@Override
protected void onMessage(Context context, Intent intent) {
String message = "";
message = intent.getStringExtra("message")!=null ? intent.getStringExtra("message") : "";
doNotify(message);
}
J'ai essayé de ré-encoder le message mais cela ne fonctionne pas.
message = new String(message.getBytes("ISO-8859-1"), "UTF-8");
Avez-vous une idée sur le problème ? J'ai besoin de votre aide, merci.