Пользовательское Push-уведомление, которое появляется дважды, используя Parse.com android

Я работаю в пользовательском push-уведомлении, используя parse.com android. Push успешно интегрирован в мое приложение, но проблема в том, что я получаю два уведомления за раз. Один из моего пользовательского приемника с изображением и другим уведомлением по умолчанию из ОС без какого-либо изображения, и это уведомление даже не удаляет из панели уведомлений, если я удаляю его, он снова и снова появляется в лотке уведомлений. Я также вставляю фрагмент кода и изображения ниже. Пожалуйста, помогите мне решить эту проблему.

// My Custom Receiver Class public class CustomPushReceiver extends ParsePushBroadcastReceiver { private final String TAG = CustomPushReceiver.class.getSimpleName(); private NotificationUtils notificationUtils; private Intent parseIntent; public CustomPushReceiver() { super(); } @Override public void onReceive(Context context, Intent intent) { super.onPushReceive(context, intent); if (intent == null) return; parseIntent = intent; try { String action = intent.getAction(); JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data")); if (action.equalsIgnoreCase("com.parse.push.intent.RECEIVE")) { // NOTIFICATION_ID++; String title = "DW"; if (json.has("alert")) { String text = json.getString("alert"); generateNotification(context, title, json, text,parseIntent); } } } catch (JSONException e) { } } @Override protected void onPushDismiss(Context context, Intent intent) { super.onPushDismiss(context, intent); } @Override protected void onPushOpen(Context context, Intent intent) { super.onPushOpen(context, intent); } private void generateNotification(Context context, String title, JSONObject json, String text, Intent intent) { // Intent intent = new Intent(context, home.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT); NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); android.support.v4.app.NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.log_pic_small) .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.log_pic)) .setAutoCancel(true) .setContentTitle(title) .setContentText(text) .setStyle(new NotificationCompat.BigTextStyle().bigText(text)) .setTicker(text) .setLights(Color.GREEN, 500, 500); mNotifM.cancel(0); mBuilder.setContentIntent(contentIntent); mNotifM.notify(110, mBuilder.build()); } } 

Файл манифеста

 <service android:name="com.parse.PushService" /> <receiver android:name="com.restaurant.services.CustomPushReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <!-- IMPORTANT: Change "info.androidhive.parsenotifications" to match your app's package name. --> <category android:name="com.dw" /> </intent-filter> </receiver> 

Введите описание изображения здесь

Я думаю, что ваша проблема генерируется методом super.onPushReceive(context, intent); В вашей public void onReceive(Context context, Intent intent) .

Я думаю, вы должны переопределить protected void onPushReceive(Context context,Intent intent) и обрабатывать push-уведомление там. ПРИМЕЧАНИЕ. НЕ ВЫЗЫВАЙТЕ супер, если вы переопределите onPushReceive потому что он снова отобразит нажатие.

Согласно документации Parse:

Вызывается при получении push-уведомления. По умолчанию намерение трансляции будет отправлено, если в данных присутствует «действие», и уведомление будет показано, если в данных присутствуют «предупреждение» и «название».

РЕДАКТИРОВАТЬ

Открытый класс CustomPushReceiver расширяет ParsePushBroadcastReceiver {….. код инициализации здесь из вашего примера …

 @Override public void onReceive(Context context, Intent intent) { super.onReceive(Context context, Intent intent); } @Override public void onPushReceive(Context context, Intent intent) { //NO SUPER CALL ....exact code from your onReceive..... } ... rest of the code from your example... 

}

Я думаю, вы можете справиться с этим здесь.

Не генерировать уведомление каждый раз, а вместо этого инициализировать в первый раз при запуске приложения

CustomPushReceiver customReciever = новый CustomPushReceiver (getApplicationContext ());

// установите этот RECIEVER на ваш завод push

GetPushManager (). SetNotificationFactory (customReciever);

Проверьте, добавили ли вы два приемника в файле манифеста, один для приемника синтаксического анализа по умолчанию и другие для вашего настраиваемого ресивера. Если это так, удалите приемник разбора по умолчанию и сохраните только ваш.