Я хочу попробовать службу Google Cloud Messaging (GCM), и я столкнулся с проблемой в начале.
Я получаю сообщение об ошибке AUTHENTICATION_FAILED
при попытке зарегистрировать устройство в GCM.
Я искал, и все, что я нашел, это варианты неправильного пароля. Мой пароль правильный, и я использую только одну учетную запись.
Существует два способа внедрения GCM-клиента на Android:
- Библиотека GCM с дополнительной банкой, теперь устарела.
- API сервисов Google Play
Я начал со второго, конечно, и получил эту проблему.
Я думал, что проблема в моем телефоне, но потом решил попробовать первый способ, который сработает! Однако он устарел и требует дополнительной банки, что не похоже на правильный путь.
В попытке понять причины ошибки я декомпилировал банку Google Play Services и сравнил ее с библиотекой 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);
}
Разница в одной строке:
В библиотеке GCM это com.google.android.gsf
, где gsf
- платформа Google Services (я думаю), и она работает!
В банке API сервисов Google Play это com.google.android.gms
, и он не работает (ошибка AUTHENTICATION_FAILED).
Затем в библиотеке GCM я заменил "gsf" на "gms" и запустил. И у меня такая же ошибка AUTHENTICATION_FAILED! Если я вхожу в другой пакет, то он не работает.
Что мне нужно сделать, чтобы он работал? Должен ли я настроить что-то в телефоне? Или это ошибка в сервисах Google Play? Кто-нибудь столкнулся с такой проблемой?
Спасибо заранее!