0

Я пытаюсь получить GCM Cordova Plugin для запуска в примере приложения. Я загрузил источник, и в Eclipse я создал проект из существующего кода.Cordova/Phonegap Плагин GCM для Android сбой

Теперь в этом проекте есть файл под названием CORDOVA_GCM_script.js, где необходимо изменить идентификатор отправителя, чтобы соответствовать своему собственному идентификатору GCM служб (который я получаю от моего проекта Google):

window.plugins.GCM.register("my_sender_id", "GCM_Event", GCM_Success, GCM_Fail); 

чтобы отправить сообщение в моем приложении я использую Node.js с этим сценарием, так же, как объяснено Холли Schinsky на this post:

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); 
    } 
}); 

Теперь, когда я запустить приложение на устройстве, оно запускается и регистрируется но когда я пытаюсь отправить ему сообщение, Shes и существует с сообщением «К сожалению, 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) 

Я нашел this post и последовал предлагаемый совет, но приложение сохраняет сбой.

Может ли кто-нибудь дать мне какие-либо рекомендации по этому вопросу?

спасибо.

ответ

0

Благодаря наконечнику, предоставленной ITech, я заметил, что проблема на самом деле с сервером; в частности, тем, как сервер посылал сообщение на устройство.

Теперь я использую node-gcm и этот скрипт, чтобы отправить сообщение:

var gcm = require('/usr/local/lib/node_modules/node-gcm'); 
var message = new gcm.Message(); 
var sender = new gcm.Sender('charsRepresentingAPIKey'); 
var registrationIds = []; 

message.addData('message', 'hello'); 
message.addData('msgcnt', '1'); 
message.collapseKey = 'demo'; 
message.delayWhileIdle = true; 
message.timeToLive = 3; 

registrationIds.push('charsRepresentingRegIDOfDevice'); 

sender.send(message, registrationIds, 4, function (err, result) { 
     console.log(result); 
}); 

С моим предыдущим скриптом (вы можете увидеть его на этот вопрос), почему-то данные не включены в сообщение и, следовательно, приложение разбился при попытке распечатать в журнале значения для включенных данных. С этим скриптом этого не происходит.

1

Как показано в вашем StackTrace, эта ошибка возникает, когда вы передаете сообщение null на номер Log.v.

Это может быть messageId равна нулю console.log("Sent with message ID: ", messageId);

Попробуйте изменить его

console.log("Sent with message ID: ", messageId + ""); 

Это просто быстрое решение для отладки цели.

Другая вещь, которую вы можете проверить это, чтобы комментировать строку 75 в Cordova code код

Log.v(ME + ":onMessage ", json.toString());

+0

Как вы сказали, я прокомментировал обе строки. , , приложение больше не разбивается, и в WebView я вижу строки «MESSAGE -> MSG: undefined» и «MESSAGE -> MSGCOUNT: undefined», что указывает на то, что, возможно, я не правильно отправляю сообщение с сервера , – Octavio