2

Google gcm を実装するための基本的な例を読みました。gcmサーバーから登録IDを正常に取得する小さなクライアント側Androidアプリケーションを開発しました..現在、サーバー側でRuby on Railsを使用しているため、このgemを使用してgcmのサーバー側を実装していますhttps://github.com/dondeng/gcm_on_rails . 登録 ID をサーバーに渡します。これらのコマンドを正常に実行しました

device = Gcm::Device.create(:registration_id => "XXXXXXXXXXXXXXXXXXXXXX")

通知 = Gcm::Notification.new

notification.device = デバイス

notification.collapse_key = "updates_available"

notification.delay_while_idle = true

notification.data = {:registration_ids => ["RegistrationID"], :data => {:message_text => "クラウド ナインを取得"}}

通知.保存

通知の配信に使用:

$ rake gcm:notifications:deliver

私のrakeコマンドはエラーなしで実行されています。しかし、これらすべてのタスクが完了した後、私のデバイスはメッセージを受信しません..バックグラウンドで何が起こっているのかわかりません。送信したメッセージがデバイスで正しく受信されていることを確認する方法.. 助けが必要です... ありがとうございます....

4

2 に答える 2

1

GCMメッセージのデバッグは、煩雑で困難な場合があります。

考えられる理由の 1 つは、構成ファイルで定義する必要があるGCM の API キーが間違っていることです。間違った API キーを使用すると、{:code=>200, :message=>nil}メッセージが送信されていなくても、サーバーから成功の応答が返されることがあります。この場合、Google API コンソールに移動し、正しいキーを検索します。

別の考えられる理由はREGISTRATION_ID、デバイスに問題があることです。REGISTRATION_ID が正しくない場合、NotRegisteredまたはInvalidRegistrationエラーが発生する可能性がありますが、これは (現時点では) gcm_on_rails プラグインによって常に認識されるわけではありません。次の curl コマンドを使用して、コンソールから API をデバッグします (API_KEY とREGISTRATION_IDデバイスの を挿入します)。

curl --header "Authorization: key=API_KEY" \
     --header Content-Type:"application/json" \ 
     https://android.googleapis.com/gcm/send  \
     -d "{\"registration_ids\":[\"REGISTRATION_ID\"],
          \"data\":{\"message_text\":\"Test, Test\"}}"

Gcm API の呼び出しの成功/失敗は次のようになります。

{"multicast_id":7961..,"success":1,"failure":0,"canonical_ids":1,
 "results":[{"registration_id":"..","message_id":"0:.."}]}

{"multicast_id":7961..,"success":0,"failure":1,"canonical_ids":0,
 "results":[{"error":"NotRegistered"}]}

message_type最後に、もう 1 つの理由は、その日の無効なキーです。データ ハッシュのキーなどの予約語を使用しないでください。ステータス コード 200 が返されますが、通知は配信されません。高度なオプションmessage_typeの 1 つです(それを見つけるのに 1 時間以上かかりました)。

于 2013-05-27T12:20:53.437 に答える
0

サーバー側にエラーがない場合は、Android アプリでイベントを正しく処理していない可能性があります。

http://developer.android.com/guide/google/gcm/gs.html#android-appのガイドラインに従い、デバッグ用のログを書きます。

于 2012-09-03T11:02:45.583 に答える