Это действительно раздражает меня. У меня есть приложение, которое использует GCM. У меня есть люди, жалующиеся, что они не могут войти из-за ошибки. Позвольте мне показать вам, как я делаю вход:
// Login Activity
//....
public void onClickLoginButton (View v) {
// Do some stuff...
new GCMRegister().execute(); //AsyncTask
}
private class GCMRegister extends AsyncTask<Void, Void, Integer> {
@Override
protected Integer doInBackground (Void... params) {
ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
try {
//Get GCM Registration key
registrationId = googleCloud.register(Settings.PROJECT_NUMBER);
} catch (Exception e) {
Log.e("GCMRegister", e.toString());
return -1;
}
return 1;
} else {
return -3;
}
}
@Override
protected void onPostExecute(Integer result) {
if (result == 1) {
new LoginAsync().execute(); // Another AsyncTask to check in my database if user is valid and save its key
} else {
user.setEnabled(true);
password.setEnabled(true);
login.setEnabled(true);
if (result == -1) {
Toast.makeText(Login.this, "A problem occured login in", Toast.LENGTH_LONG).show();
} else if (result == -3) {
Toast.makeText(Login.this, "I need an internet connection", Toast.LENGTH_LONG).show();
}
}
}
Таким образом, многие люди жалуются, что не могут войти в систему из-за ошибки "Ошибка при регистрации", что указывает на то, что GCM не работает в регистре. Даже я с моим устройством Android 4.4.2 не может сделать это сначала. Мне нужно попытаться войти в систему 2 или 3 раза, пока это не сработает (и Im в хорошей связи). Ошибка в моем LogCat:
08-04 21:29:10.922: E/GCMRegister(18182): java.io.IOException: SERVICE_NOT_AVAILABLE
Так что же случилось с моим кодом? Это сводит меня с ума.