Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Урок №1: Будьте готовы часто получать SERVICE_NOT_AVAILABLE
Урок №2: Будьте готовы к повторяющимся ошибкам вызова register, даже если рабочий registration ID создан
или пользователь делает сброс к заводским установкам (factory reset)
На этом все. Печально, что для того, что бы обеспечить бесперебойную работу GCM, пришлось идти на подобные «танцы с бубном» и еще печальней, что большинство этих моментов совершенно не документированы самим Google.
А что в данном случае возвращает GooglePlayServicesUtil.isGooglePlayServicesAvailable(context)?Насколько я понимаю, этот метод проверяет наличие установленного в системе пакета Google Play Services и его версию, а не факт доступности подключения.
Может сервисы не доступны или не обновлены?
Вы о чем? Механизм с получением registartionID через broadcat использовался с с2dm, в GCM его возвращает сразу метод.Большей частью эта ошибка преследует тех, кто до сих пор использует c2dm, тем не менее, согласно документации метод public String register (String… senderIds) throws IOException, таким образом в случае ошибок связи с гугловыми сервисами будет выбрасываться именно исключение, в статье же приводится альтернативная попытка получения registartion ID
если пользователь делает factory reset ваше приложение удаляется, оО.Согласен, этот кейс тут приведен скорее как один из теоретических примеров, когда может измениться Android ID.
Насколько я понимаю, этот метод проверяет наличие установленного в системе пакета Google Play Services и его версию, а не факт доступности подключения.
Только что проверил его работу, отключив работу 3G и WiFi сразу перед вызовом isGooglePlayServicesAvailable — результат ConnectionResult.SUCCESS.
Большей частью эта ошибка преследует тех, кто до сих пор использует c2dm
тем не менее, согласно документации метод public String register (String… senderIds) throws IOException, таким образом в случае ошибок связи с гугловыми сервисами будет выбрасываться именно исключение, в статье же приводится альтернативная попытка получения registartion ID
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
// If there is an error, don't just keep trying to register.
// Require the user to click a button again, or perform
// exponential back-off.
}
Обеспечиваем надежную работу Google Cloud Messaging