ブロードキャスト メッセージを GCM に投稿する役割を果たしている Google App Engine にデプロイされたサーブレットがあります。Android クライアントは、GCM からそのブロードキャスト メッセージを受信します。サーブレットは、次のスニペットでBaseServletを拡張します。
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//when receiving a gcm broadcast request, send message to GCM
Builder mb = new Message.Builder();
mb.addData("message", "The message to send");
Message message = mb.build();
sender.sendNoRetry(message, regIds);
...
}
「送信するメッセージ」が英語の場合は、すべて問題ありません。しかし、「送信するメッセージ」を中国語などの他の言語に置き換えると、Android クライアントは文字化けした文字列を受け取ります。Android クライアントでは、クラス extends GCMBaseIntentService を使用して GCM ブロードキャストを処理します。
@Override
protected void onMessage(Context context, Intent intent) {
String message = "";
message = intent.getStringExtra("message")!=null ? intent.getStringExtra("message") : "";
doNotify(message);
}
メッセージを再エンコードしようとしましたが、うまくいきません。
message = new String(message.getBytes("ISO-8859-1"), "UTF-8");
問題について何か考えがありますか?あなたの助けが必要です、ありがとう。