Google Cloud Messaging(GCM) でプッシュ通知に取り組んでいます。このチュートリアルに従って、サーバー側とクライアント側をセットアップできます。
サーバーは Apache Tomcat6.0 (localhost) と Google API の Android エミュレーター (API レベル 17) で実行されます。送信者 ID と API キーがあります。エミュレーターから実行すると、デバイス接続が成功したというメッセージが表示されます。その後すぐに、サーバーからメッセージを送信すると、次のエラーが表示されます。
com.google.android.gcm.server.InvalidRequestException: HTTP Status Code: 401()
com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:211)
com.google.android.gcm.server.Sender.send(Sender.java:125)
com.google.android.gcm.demo.server.SendAllMessagesServlet.doPost(SendAllMessagesServlet.java:83)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
他の投稿から、間違った API キーが原因であることがわかりました。しかし、私の場合は、API コンソールから正しいものを使用していることを確認しました。
ところで、エミュレータを実行すると、「regId をサーバーに送信しています」というメッセージが表示されました。登録IDとは?送信者 ID とは異なります。エンコードされたもののように見えます。
何か突破?
編集
問題はついに解決されました!Ant が WAR ファイルを適切に構築していませんでした。そのため、API キーはほとんど更新されません。バグを見つけるのは悪夢のような地獄でした。入力していただきありがとうございます!