Здравствуйте, мы работаем над андроидным приложением, в котором GCM играет очень важную роль, например, в маркетинговой цели, выдает важную информацию пользователям и т.д.
Он работает нормально в 60-70% случаях, но другие 30-40% он не работает. Таким образом, остальные пользователи никогда не получают уведомления, которое полезно только для них.
Именно по этой причине мы каждый день теряем пользователей. Ниже мой код, чтобы получить идентификатор регистрации GCM.
String msg = "";
int exceptionOccurRetry = 0;
while (exceptionOccurRetry < 5) {
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
int retry = 0;
while (retry < 5 && regid.length() == 0) {
regid = gcm.register(SENDER_ID);
++retry;
}
msg = "Device registered, registration ID=" + regid;
if (!regid.equals("")) {
// You should send the registration ID to your
// server
// over HTTP, so it
// can use GCM/HTTP or CCS to send messages to your
// app.
sendRegistrationIdToBackend();
}
break;
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
exceptionOccurRetry++;
}
}
Мы смотрим, каковы причины, по которым идентификатор GCM недоступен для некоторых пользователей.
Мы знаем только одну причину: если пользовательское устройство не имеет сервисов Google Play, установленных на телефоне пользователя, это не сработает.
Мы рассмотрим еще несколько причин для решения этой проблемы.