7

AndroidアプリでGCMサービスを使用しようとしています。

そのために、私はhttp://developer.android.com/guide/google/gcm/gcm.htmlからのAndroidドキュメントを使用しました

送信者IDなどを使用してクライアント側の登録プロセスを作成し、登録IDと送信者IDを使用してメッセージを送信するサーバー側のアプリケーションを作成しました。

Eclipseを介して携帯電話にアプリをインストールしているとき、プッシュ通知は正常に機能するため、私が持っている送信者IDは正しいです。

次に、Eclipseでapkファイルをエクスポートして電話にインストールすると、SenderIdが間違っているというエラーメッセージが表示されます。

MissmatchedSenderId

なぜ私がこれを手に入れているのか、誰にも分かります。

私はそれらのトピックを読みました:

GCMサーバー側から「MismatchSenderId」を取得するのはなぜですか?

GCMを使用してメッセージを送信すると、「MismatchSenderId」という応答が返され続けます。

しかし、私の場合の奇妙なことは、アプリをapkとしてエクスポートする前にすべてが正常に機能し、その後この問題が発生することです。

どんなアイデアでも大抵は歓迎されます。

4

2 に答える 2

10

私は実際に同じ問題を抱えていて、10時間以上研究していました。

私はついに問題を発見しました!サーバーAPIキーまたはブラウザAPIキーまたはSenderIDに関連するものはありません。問題はGoogleのドキュメントでした:

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}

Googleによると、getRegistrationId関数を呼び出す必要があるのは、IDが空の場合のみです。これは私にはまったく機能しませんでした...私がそれをしたとき、私はこのregIdに送信するときに常にMismatchSenderIdを返しました。

私の解決策は:常に電話する

GCMRegistrar.register(this, SENDER_ID);

そして関数が

protected void onRegistered( Context c, String regId )

サーバーデータベースにregIdを保存するという名前です。

このようにすれば、すべてうまくいきます!

于 2012-10-18T09:00:14.073 に答える
1

GCMが提供するSenderIDとAPIキーの組み合わせは、アプリケーションごとに異なります。

クライアント側でsenderIDを更新したが、古いsenderIDに関連するAPIキーを引き続き使用したときに、senderIDの不一致の問題に直面しました。

サーバーAPIキーを更新した後、問題を解決することができました。また、@schurtertomによる回答は非常に役立ちます

于 2013-08-18T19:10:33.000 に答える