1

アプリケーションで GCM を使用していますが、デバイスを登録しようとすると、GCMIntentService の onRegistered メソッドが呼び出されません。

デバイスに GCM デモ アプリケーションをインストールしましたが、動作します。

http://developer.android.com/guide/google/gcm/demo.html

このアプリでは、デバイスが登録されており、メッセージを送信できます。同じ GCMIntentService を使用して、自分のアプリで GCM を使用しようとしました。マニフェストも調整しましたが、登録しようとすると、ログに次のように表示されます。

09-25 10:00:10.195: V/GCMRegistrar(591): 送信者 38322290XXXXX のアプリ com.pfc.dps を登録中

他には何もありません。応答がありません。これらは私のマニフェストの許可です:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pfc.dps"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>

<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Creates a custom permission so only this app can receive its messages. -->
<permission
    android:name="com.pfc.dps.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission
    android:name="com.pfc.dps.permission.C2D_MESSAGE" />

<!-- This app has permission to register and receive data message. -->
<uses-permission
    android:name="com.google.android.c2dm.permission.RECEIVE" />

Google API コンソールで新しいプロジェクトを作成して、そのように機能するかどうかを確認しましたが、どの送信者 ID を使用しても同じ結果が得られます。

それがなぜなのか誰か知っていますか?

ありがとうございました!

4

1 に答える 1

4

「送信者*sender_id*のアプリ*your_package*を登録中」の後に

アプリを起動するためonReceiveに呼び出すイベントを受け取る必要があります。GCMIntentService

持っていない場合は、受信者を逃したか、自分のパッケージのカテゴリを変更するのを忘れていないかを確認してください。

<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"
          android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
       <action android:name="com.google.android.c2dm.intent.RECEIVE" />
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
       <category android:name="***your_package***" />
     </intent-filter>
</receiver>
于 2012-09-26T16:34:23.207 に答える