我得到了一个第三方服务器的工作示例,可以将推送通知发送到在我使用的 Android 模拟器中完美运行的设备。一旦我尝试在我的真实设备(Samsung Galaxy S)上使用它,我就不再收到我的通知,即使我在谷歌服务器上重新注册了设备(因为我使用相同的 gmail 帐户)。我基本上不知道从哪里开始寻找,因为 Logcat 没有给我任何有趣的信息。该代码在模拟器设备中运行,所以我的猜测是开始查看权限规则。有任何想法吗?
我不知道这是否重要,但我正在使用 Ubuntu 10.10 进行开发/调试。
我得到了一个第三方服务器的工作示例,可以将推送通知发送到在我使用的 Android 模拟器中完美运行的设备。一旦我尝试在我的真实设备(Samsung Galaxy S)上使用它,我就不再收到我的通知,即使我在谷歌服务器上重新注册了设备(因为我使用相同的 gmail 帐户)。我基本上不知道从哪里开始寻找,因为 Logcat 没有给我任何有趣的信息。该代码在模拟器设备中运行,所以我的猜测是开始查看权限规则。有任何想法吗?
我不知道这是否重要,但我正在使用 Ubuntu 10.10 进行开发/调试。
您的 ROLE Account gmail ID 是否与手机上配置的 gmail ID 相同?我确实有这个问题。如果是这样,您可以尝试在手机上使用其他 gmail ID 吗?有关更多信息,请参阅此。
这可能是许可问题吗?您是否在清单中设置了正确的权限?也许模拟器在缺乏权限方面并不那么严格(我经历过,有时,有些设备可以工作而其他设备没有,我所缺少的只是一个清单权限)
你必须同时设置
<permission
android:name="your.packagename.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
和
<uses-permission android:name="your.packagename.matchtracker.permission.C2D_MESSAGE" />
在清单的主要部分并声明一个广播接收器
<receiver
android:name=".push.RegistrationReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="your.packagename" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="your.packagename" />
</intent-filter>
</receiver>