在模拟器上推送通知工作,但不在真实设备上

时间:2011-04-14 08:26:30

标签: android push-notification android-c2dm

我有一个第三方服务器的工作示例,用于向设备发送推送通知,这完全适用于我使用的Android模拟器。一旦我尝试在我的真实设备(三星Galaxy S)上使用它,我就不再接收我的通知,即使很难我在谷歌服务器上重新注册设备(因为我使用相同的Gmail帐户)。我基本上不知道从哪里开始看,因为Logcat没有给我任何有趣的信息。代码在模拟器设备中工作,所以我的猜测是开始查看权限规则。有什么想法吗?

我不知道这是否重要,但我正在使用Ubuntu 10.10进行开发/调试。

2 个答案:

答案 0 :(得分:4)

您的ROLE帐户是否与手机上配置的gmail ID相同?我确实遇到了这个问题。如果是这样,你可以尝试在手机上使用其他一些Gmail密码吗?有关详情,请参阅this

答案 1 :(得分:0)

这可能是一个许可问题吗?你在清单中设置了正确的权限吗? 也许模拟器在缺乏权限方面并不是那么严格(我有时经历过,有些设备有效,有些设备无效,而我所遗漏的只是明显的许可)

你必须设置两个

 <permission
        android:name="your.packagename.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

<uses-permission android:name="your.packagename.matchtracker.permission.C2D_MESSAGE" />

在清单的主要部分中,并使用

声明一个brodcast接收器
<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>