当我尝试在我的设备中接收消息时,我遇到了一个问题,一切正常但是当我尝试重新安装它时没有任何结果,我得到了:
id = 0:1319039498507602%b50b7d2400000031
来自https://android.apis.google.com/c2dm/send
这意味着发送的消息不是吗?
但我无法在设备中收到它。
有人可以帮助我吗?提前感谢。
编辑:我的manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="clouders.com" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<permission
android:name="clouders.com.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission
android:name="clouders.com.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".C2DMClientActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".C2DMRegistrationReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"></action>
<category android:name="clouders.com" />
</intent-filter>
</receiver>
<receiver android:name=".C2DMMessageReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"></action>
<category android:name="clouders.com" />
</intent-filter>
</receiver>
<activity android:name="RegistrationResultActivity"></activity>
<activity android:name="MessageReceivedActivity"></activity>
</application>
</manifest>
答案 0 :(得分:1)
基于可能的响应代码列表:http://code.google.com/android/c2dm/#server,我相信您注册了服务器,使用google c2dm服务正确发送邮件,并且您已经使用了正确的服务器身份验证密钥和android的注册ID电话,所以google c2dm收到了消息并发回了响应代码200以及id = 0:1319039498507602%b50b7d2400000031作为http响应内容,其中0:1319039498507602%b50b7d2400000031是已发送消息的ID 。我不知道您是否找到了解决方案,但我会建议以下故障排除/调试机制,因为它可能会帮助其他人:
1)你的c2dm服务器的https请求中的消息/有效负载参数是什么,因为你需要这个参数才能在手机上进行调试
2)确保您已在手机eg.gmail上登录了Google帐户。您可以在手机设置&gt;下执行此操作。账户&amp;同步...
3)确保设备/电话已注册且服务器正在使用手机上当前的注册ID。您可以检查此信息,但记录您的注册响应。实际上,服务器应该能够通过c2dm到达手机,即使手机上的注册ID已经改变但只是三倍肯定,哈哈,两端使用相同的。同样在您使用注册Android设备的意图中,使用服务器用于注册c2dm的电子邮件作为发送者参数。
4)记录来自c2dm的传入消息。我看到你有一个C2DMMessageReceiver类。你可以在那里做。有了它,您可以从服务器中看到有效负载参数。您还可以在消息到达时以有效负载作为内容创建通知。您还可以在Android上使用Toast进行快速显示。
我希望所有这些都有所帮助。
答案 1 :(得分:0)
您是如何设置第三方服务器的(C2DM-sharp或基于PHP)?我会通过比较google chrome-to-phone等示例来验证客户端代码。还要确保您注册的C2DM电子邮件地址和密码正确无误。
答案 2 :(得分:0)
您是否检查过它是否是编码问题?你的id似乎是编码的(我的意思是这个%b50?)。
您从https://android.apis.google.com/c2dm/send获得的ID是消息ID。 在评论中,您发布了与注册ID相同的ID? 这不应该是一样的。