use*_*139 13 android push-notification google-play google-cloud-messaging google-play-services
我想尝试使用Google Cloud Messaging(GCM)服务,我在开始时遇到了问题.
AUTHENTICATION_FAILED尝试将设备注册到GCM时出错.我搜索了所有我发现的密码不正确的变种.我的密码是正确的,我只使用一个帐户.
在Android上实现GCM客户端有两种方法:
当然我从第二个开始就遇到了这个问题.
我认为问题出在我的手机上,但后来决定尝试第一种方式,哪有效!但是,它已被弃用,需要一个额外的jar,这似乎不是正确的方法.
为了解错误的原因,我反编译了Google Play Services jar并将其与GCM库进行了比较.
事实证明他们都有类似的方法,如:
void register(Context context, String senderIds) {
Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
intent.setPackage("com.google.android.gms"); // this one row are different
setPackageNameExtra(context, intent);
intent.putExtra("sender", senderIds);
context.startService(intent);
}
Run Code Online (Sandbox Code Playgroud)
一行的差异:
在GCM库中com.google.android.gsf,gsf谷歌服务框架(我猜)在哪里,它的工作原理!
在Google Play Services API jar中com.google.android.gms,它不起作用(AUTHENTICATION_FAILED错误).
然后在GCM库中,我将"gsf"替换为"gms"并运行.我得到了相同的AUTHENTICATION_FAILED错误!如果我输入另一个包,那么它就不起作用了.
我需要做些什么来使它工作?我应该在手机中设置一些东西吗?或者这是Google Play服务中的错误?有人遇到过这样的问题吗?
提前致谢!
这似乎是一个错误。以下是一位 Android 开发者在android-gcm Google Group中对此的评价:
一些背景:Froyo和Gingerbread的注册是在GoogleServicesFramework中实现的,使用Google帐户进行注册。对于帐户状态不佳的人来说,这会导致很多身份验证错误。
从 ICS 开始,GCM 不依赖或不使用 Google 帐户 - 您可以在添加帐户之前或不添加任何帐户时使用它。
“Play Services”更新正在所有设备上实施新方案 - 但似乎少数设备存在此问题,我们正在调查 - 但数量远远低于旧方案的数量。
如果您想使用 GSF 中的代码,对于 Froyo 和 Gingerbread - 您需要使用以前的库,它显式设置包名称。 GCM 中的新库正在使用新的注册码。
与谷歌的实际连接遵循相同的路径 - 我们正在逐渐(缓慢地)将设备转移到播放服务中的新代码。
到目前为止,我收到了 2 个错误报告,并且我们有一些嫌疑人。我们知道,如果设备超过 9 个月没有连接,它将处于这种状态,并且需要恢复出厂设置。
我们收到了一些报告,其中恢复出厂设置并不能解决问题 - 但我没有错误报告或信息来确认或追踪这一点。我发现恢复出厂设置无济于事的唯一情况是手机在初始签入时向服务器发送错误信息 - 我们为此添加了额外的检查。
显然,恢复出厂设置可能会解决问题,但他们仍在调查中。