这是我的C2DMReceiver:
public class C2DMReceiver extends C2DMBaseReceiver {
public C2DMReceiver() {
// Email address currently not used by the C2DM Messaging framework
super("dummy@gmail.com");
}
@Override
public void onRegistered(Context context, String registrationId)
throws java.io.IOException {
// The registrationId should be send to your applicatioin server.
// We just log it to the LogCat view
// We will copy it from there
Log.e("C2DM", "Registration ID arrived: Fantastic!!!");
Log.e("C2DM", registrationId);
};
@Override
protected void onMessage(Context context, Intent intent) {
Log.e("C2DM", "Message: Fantastic!!!");
// Extract the payload from the message
Bundle extras = intent.getExtras();
if (extras != null) {
System.out.println(extras.get("payload"));
// Now do something smart based on the information
}
}
@Override
public void onError(Context context, String errorId) {
Log.e("C2DM", "Error!");
}
}
它应该做的是显示“消息:太棒了!!!”在LogCat中,它无处可见。我究竟做错了什么?我的Web应用程序中有注册ID(用PHP编写),但没有运气。当我执行请求时,我得到了回复:
id=0:1311936686518981%48da2b9fb207fa19
使用指南:http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html
答案 0 :(得分:1)
使用C2DM时需要处理很多事情。我认为你的代码看起来还不错(即使我还没有测试它)。你的AndroidManifest.xml
怎么样?我花了将近两天的时间才意识到我的AndroidManifest.xml
包含一些错误,所以我无法让它发挥作用。
彻底阅读此documentation,我建议您安装(并从源代码中学习)ChromeToPhone
应用,以便您了解C2DM的关键。
不要忘记C2DM仅适用于Froyo(2.2)及以上版本。