我正在尝试使用Google的C2DM服务注册Android设备,但是当我在手机上安装应用程序时尝试这样做时,我在logcat中收到以下内容:
W/DefaultRequestDirector( 1210): 身份验证错误: 无法响应以下任何质询: {}D/C2DMRegistrar( 1210): [C2DMRegistrar.30] 寄存器: HTTP 错误 401E/C2DMRegistrar( 1210): [C2DMReg] handleRequest caught org.apache.http.auth.AuthenticationException
我还打印了我发送给Google的内容到logcat。它明确遵循仅取出电子邮件地址。这个电子邮件地址是我在谷歌注册的推送通知发件人的电子邮件地址。
Intent extras: Bundle[{sender=me@myemail.com, app=PendingIntent{4471c300: android.os.BinderProxy@44762840}}]
ComponentName 对象(startService 调用的结果):ComponentInfo{com.google.android.gsf/com.google.android.gsf.gtalkservice.PushMessagingRegistrar}
澄清一下,这不是向设备发送实际消息的问题 - 我还没有那么远。此问题与注册设备有关。
任何帮助将不胜感激。
您需要确保已完成一些操作才能完成注册:1. 使用谷歌电子邮件帐户在安卓C2DM网站上注册2. 使用该帐户将注册意向发送到谷歌服务器。您的注册意图应如下所示:
public void registerApp() {
Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
intent.putExtra("app",
PendingIntent.getBroadcast(this, 0, new Intent(), 0));
intent.putExtra("sender", "youraccont@gmail.com");
ComponentName result = startService(intent);
Log.d("Intent", "" + result);
}
此外,请务必在清单中声明这一点
如果您使用的电子邮件帐户不受Google管理,这也可能导致问题。您只需注册一个新的Gmail帐户即可用于c2dm推送通知。
希望这有帮助