提供されているサンプルアプリケーションでGCMCordovaプラグインを実行しようとしています。ソースをダウンロードし、Eclipseで既存のコードからプロジェクトを作成しました。
現在、このプロジェクトにはCORDOVA_GCM_script.jsというファイルがあり、送信者IDを自分のGCMサービス識別子(Googleプロジェクトから取得)と一致するように変更する必要があります。
window.plugins.GCM.register("my_sender_id", "GCM_Event", GCM_Success, GCM_Fail );
この投稿でHollySchinskyが説明したように、アプリケーションにメッセージを送信するには、このスクリプトでnode.jsを使用します。
var GCM = require('gcm').GCM;
var apiKey = 'someCharsRepresentingMyKey';
var gcm = new GCM(apiKey);
var message = {
registration_id: 'myDeviceRegistrationId', // required
collapse_key: 'demo',
'message': 'Yourturn',
'title': 'My Game',
'msgcnt': '1'
};
gcm.send(message, function(err, messageId){
if (err) {
console.log("Something has gone wrong!");
} else {
console.log("Sent with message ID: ", messageId);
}
});
これで、デバイスでアプリケーションを実行すると、アプリケーションが起動して登録されますが、アプリケーションにメッセージを送信しようとすると、クラッシュして「残念ながら、GCMが停止しました」というメッセージが表示されます。
LogCatは私にこれを示しています:
03-05 20:15:39.897: E/AndroidRuntime(19007): FATAL EXCEPTION: IntentService[GCMIntentService-GCMIntentService-2]
03-05 20:15:39.897: E/AndroidRuntime(19007): java.lang.NullPointerException: println needs a message
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.util.Log.println_native(Native Method)
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.util.Log.v(Log.java:117)
03-05 20:15:39.897: E/AndroidRuntime(19007): at com.cordova2.gcm.GCMIntentService.onMessage(GCMIntentService.java:63)
03-05 20:15:39.897: E/AndroidRuntime(19007): at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:179)
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.os.Looper.loop(Looper.java:137)
03-05 20:15:39.897: E/AndroidRuntime(19007): at android.os.HandlerThread.run(HandlerThread.java:60)
この投稿を見つけて提案されたアドバイスに従いましたが、アプリがクラッシュし続けます。
誰かが私にこれについて何かアドバイスを与えることができますか?
ありがとうございました。