我正在开发一个使用GCM推送通知的Android应用程序(一步一步:http://developer.android.com/google/gcm/index.html),但并非所有设备都从GCM服务器获取通知。
我调试了它,我看到我的3d-party服务器成功发送了消息。
当我发送到我的Galaxy-S4设备时,我收到了通知,但在我的Galaxy-S2中,我没有收到通知。
的AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="com.example.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
<receiver
android:name=".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="com.freco" />
</intent-filter>
</receiver>
<service android:name=".gcm.GcmIntentService" />
我认为其他代码在这里没有必要,因为它在Galaxy-S4中运行良好。
你觉得怎么样?
答案 0 :(得分:1)
你的app,com.freco(在广播接收器的类别中定义)或com.example.gcm(在你的权限中定义)的包是什么?
您应该在两个地方使用应用的包名称。出于某种原因,这种不匹配只会导致较旧的Android版本出现问题。较新的版本无论如何都可以。
答案 1 :(得分:0)
看起来像是复制粘贴错误。在您的清单中,将com.example
更改为您的实际包名称