2

なぜか「GCMRegistrar.register(this, SENDER_ID);」を使って 4.0 以上のデバイスで動作します。ただし、Google からの GCM 通知を受け取ることなく、次のメッセージでスタックしました。

差出人(my api #)のアプリ(my package)を登録中

1)4.2.1で動作しているため、マニフェストとレシーバーは正しいはずです。

2) Google Play があり、2.3.3 デバイスで Google アカウントにリンクされています

数日間検索しましたが、答えが見つかりませんでした。誰が何が間違っているのか、または同じ問題を抱えているのか知っていますか?

ありがとう

4

1 に答える 1

10

レシーバーのカテゴリを正しく設定しなかったことが原因であることがわかりました。

すべてのソース コードをライブラリ プロジェクトに配置し、個々のアプリケーションでそれを参照していたため、マニフェスト内の 3 つの異なる場所の名前を変更する必要があります。

1)

<permission
        android:name="digital.dispatch.mobilebooker.base.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

   <permission
        android:name="digital.dispatch.mobilebooker.(my app name).permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

2)

<uses-permission
        android:name="digital.dispatch.mobilebooker.base.permission.C2D_MESSAGE" />

3)

<category android:name="digital.dispatch.mobilebooker.base" />

   <category android:name="digital.dispatch.mobilebooker.(my app name)" />

4.0 + デバイスで動作した理由は、最初の 2 つだけを実行し、3) を実行しなかったためです)。4.0以降のデバイスは受信者のカテゴリを気にしないので、うまくいきました。ただし、2.3.3 デバイスでテストしている場合、実際にはカテゴリが重要であり、応答を受信できません。

これが同じ状況に遭遇した他の人に役立つことを願っています.

于 2013-04-16T22:22:42.493 に答える