2012-09-25 77 views
1

我在我的应用程序上使用GCM,但是当我尝试注册我的设备时,未调用GCMIntentService上的onRegistered方法。在GCM上注册设备:onRegistered不叫

我安装了GCM演示应用程序我的设备上,它的工作原理:

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

在此应用程序的设备注册,我可以将消息发送给它。我试图在我自己的应用程序中使用GCMIntentService来使用GCM。我适应清单也一样,但是当我尝试注册这是出现在我的日志:

十月9日至25日: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" /> 

我创建了谷歌API控制台一个新的项目,以检查它是否工作这种方式,但我得到使用任何发件人ID的相同的结果。

有人知道这是为什么吗?

谢谢!

+0

您是否将GCMIntentService保存在具有正确类别的根应用程序包中? – Yahor10

+0

其实它在包com.pfc.dps.gcm中。我需要改变什么? C2D_MESSAGE权限?或者我必须将GCMIntentService移动到根包? –

+0

您必须在包中标记您的应用程序中的GCMIntentService.class - > com.pfc.dps – Yahor10

回答

3

后的 “注册应用* your_package *发件人* SENDER_ID *

您会收到一条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> 
+0

最后,我决定将演示清单调整到我的应用程序,它工作,我想我的接收器有问题,因为一切都很好。 –