【发布时间】:2015-04-08 17:30:44
【问题描述】:
这真的让我很烦。我有一个使用 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 次,直到它起作用(并且我连接良好)。我的 LogCat 上的错误是:
08-04 21:29:10.922: E/GCMRegister(18182): java.io.IOException: SERVICE_NOT_AVAILABLE
那么我的代码有什么问题?这让我发疯了。
【问题讨论】:
标签: android google-cloud-messaging