1

我正在尝试使用 Google 的 C2DM 服务注册 Android 设备,但是当我在手机上安装应用程序时尝试这样做时,我在 logcat 中得到以下信息:

W/DefaultRequestDirector(1210):身份验证错误:无法响应任何这些质询:{} D/C2DMRegistrar(1210):[C2DMRegistrar.30] 注册:http 错误 401 E/C2DMRegistrar(1210):[C2DMReg] handleRequest 被捕获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}

澄清一下,向设备发送实际消息不是问题——我还没有做到这一点。此问题与注册设备有关。

任何帮助将不胜感激。

4

1 回答 1

0

您需要确保完成注册才能完成以下工作: 1. 使用 google 电子邮件帐户在 Android C2DM 网站上注册 2. 使用该帐户将注册意图发送到 google 服务器。您的注册意图应如下所示:

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);
}

还要确保在您的清单中声明这一点

如果您使用的电子邮件帐户不是由谷歌管理的,这也可能导致问题。您只需注册一个新的 gmail 帐户即可用于您的 c2dm 推送通知。

希望这可以帮助

于 2012-06-21T20:41:36.097 回答