アプリで GCM プッシュ通知を機能させようとしているため、このプロジェクト ( https://github.com/marknutter/GCM-Cordova ) を例として使用しています。
サンプル コードを実行するとすべて正常に動作しますが、必要なファイルをすべて転送し、コードを編集して自分のアプリで動作させると、動作しなくなります。次のプラグイン(https://github.com/phonegap-build/PushPlugin)も試しましたが、自動的にインストールした後、まったく同じエラーが発生します。
アプリはクラッシュしませんが、登録関数を呼び出すと、コールバック関数「onNotificationGCM」がメッセージを受信しません。
登録機能:
window.plugins.GCM.register("my_gcm_id", "onNotificationGCM", successHandler, errorHandler );
いくつかのデバッグの後、ネイティブ Android コードが電話を登録でき、実際に GCM サーバーから ID メッセージを取得できることがわかりましたが、これを私の JavaScript に送信することはできません。
ネイティブ Android コード:
public static void sendJavascript( JSONObject _json )
{
String _d = "javascript:"+gECB+"(" + _json.toString() + ")";
Log.v(ME + ":sendJavascript", _d);
if (gECB != null ) {
gwebView.sendJavascript( _d );
}
}
LogCat は、次の「失敗」メッセージを表示します。
03-24 17:05:21.844: V/GCMPlugin:sendJavascript(31782): javascript:onNotificationGCM({"regid":"APA91bHX...31ASD","event":"registered"})
03-24 17:05:22.834: D/CordovaLog(31782): processMessage failed: Message: Jjavascript:onNotificationGCM({"regid":"APA91bHX...31ASD","event":"registered"})
メッセージの前の大文字のJは奇妙で、おそらくそれが問題の原因ですが、Cordova 2.5.0 コードのどこかで発生しているようです。
これを解決する方法を知っている人はいますか?