Я работаю над приложением чата и пытаюсь использовать Google Cloud Messaging после этого урока:Android GCM сообщение повторено
Он отлично работает, но уведомления доставляются более чем один раз , ie: если я отправлю «привет», то будет шесть уведомлений, говорящих «привет» !! Минимум - 2 уведомления.
метод onHandleIntent:
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
mes = extras.getString("content");
if(mes==null)
return;
db=new AppDatabase(this);
boolean isforeground = isForeground("packageName");
MessageData data = new MessageData();
data.setTitle(extras.getString("title"));
data.setContent(extras.getString("content"));
data.setSend_user_name(extras.getString("send_user_name"));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String currentDateandTime = sdf.format(new Date());
data.setDate(currentDateandTime);
if (isforeground) {
String activity_group_id = Integer
.toString(MessageActivity.group_id);
if (extras.getString("group_id").equals(activity_group_id)) {
MessageHandler.messageView.addMsg(data);
} else {
showToast(data);
}
} else {
showToast(data);
}
Log.i("GCM",
"Received : (" + messageType + ") "
+ extras.getString("title"));
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
здесь код метода isForeground
public boolean isForeground(String myPackage) {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager
.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
return componentInfo.getClassName().equals(myPackage);
}
Пожалуйста, отправьте код класса обслуживания GcmListener. – Dhruv
Возможно, у вас есть два приемника. – inkedTechie
ok Я дополняю приложение другого разработчика, так что я не очень хорошо разбираюсь в GCM Вы имеете в виду класс обработчика GCM? – Radwa