Я реализовал полную функциональность GCM, и все работает отлично. Когда я запускаю приложение, я получаю regId
, и все выглядит хорошо. Но время от времени моя служба GCMIntent перестает получать входящие сообщения. Я хочу знать, что что-то не так с службой GCM, и есть ли способ проверить, было ли отправлено уведомление на устройство или нет. Ниже мой код на стороне клиента для регистрации, а затем мой сервис GCMIntent.Служба GCMIntent иногда перестает получать сообщения
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if(GCMRegistrar.isRegistered(this))
{
final String regId = GCMRegistrar.getRegistrationId(this);//app_preferences.getString(Constants.KEY_DEVICE_TOKEN, "");;
if(!regId.equals(""))
{
mRegIds= regId;
//sendIdToServer(regId);
Log.i("DEVICE TOKEN", regId);
is_gcm_registered = true;
}
}
else
{
GCMRegistrar.register(this, Constants.SENDER_ID);
is_gcm_registered = false;
}
GCM INTENT СЕРВИС:
@Override
protected void onMessage(Context context, Intent intent) {
Log.e("GOT INCOMING MESSAGE","HI");
// My implementation
}
Проблема иногда он работает сразу, а иногда это может занять до 1 до 2 минут, чтобы получить уведомление. Это нормально?
EDIT: Я читал на GCM Throttling http://developer.android.com/google/gcm/adv.html#throttling и это говорит о том, что приложение запускается из лексем, если сообщения посылаются на то же устройство в объеме. Итак, GCM не лучший способ реализовать приложение мгновенных сообщений?
В каком устройстве вы это проверяете? – appukrb
У меня есть htc evo 3d. и htc wildfire s. – SoH