Dan*_*ord 12 android google-cloud-messaging
我正在实现GCM - 我做的第一件事是调用GCMRegistrar.getRegistrationId来查看设备是否已注册.它不是(返回空字符串),所以我对GCMRegistrar.register进行异步调用.正如所料,我的意图服务(从GCMBaseIntentService派生)获取其调用的onRegistered()方法,以及我的服务器可用于向此设备发送GCM消息的令牌.到现在为止还挺好.
但是,下次运行应用程序时,我希望首先调用GCMRegistrar.getRegistrationId来返回我在intent服务的onRegistered函数中返回的令牌.但我又得到了空字符串.我认为GCM客户端库(gcm.jar)会将GCM注册ID(令牌)保存到私有SharedPreferences对象 - 事实上,GCMRegistrar类的文档(http://developer.android.com/guide/ google/gcm/client -javadoc/com/google/android/gcm/GCMRegistrar.html)声明"注意:此类使用私有SharedPreferences对象来跟踪注册令牌"
我没有取消注册设备,卸载应用程序或更新了versionCode.我缺少什么想法?谢谢
注意 - 此问题已在android-gcm标记下的google组中发布.网址在这里:
https://groups.google.com/forum/#!topic/android-gcm/4FPqZLzlvE4
Mark Murphy(一个Commons Guy)对这个问题的初步诊断非常有帮助,但没有任何具体的问题浮出水面
更新编辑 - 这是我的AndroidManifest.xml的相关部分
<receiver android:name=".push.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="com.myapp.package.name" />
</intent-filter>
</receiver>
<service android:name=".push.GCMIntentService" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4190 次 |
| 最近记录: |