2014-11-21 4 views
0

Я только что ввел в свой аккаунт оповещения обозревателя. Я хочу иметь возможность показывать push-уведомление, но я не хочу, чтобы приложение открывалось, когда пользователь нажимает уведомление Push. Вместо этого я просто хочу, чтобы уведомление было отклонено.stop Activity from display - Push-уведомление (Parse)

Я бы предположил, что это будет обрабатываться ParsePushBroadcastReciever, но я не могу найти что-либо в Интернете, которое соответствует моей цели.

Вот мой подклассы ParsepushBroadcastReciever:

public class Receiver extends ParsePushBroadcastReceiver { 

     @Override 
     public void onPushOpen(Context context, Intent intent) { 
      Log.e("Push", "Clicked"); 
      Intent i = new Intent(context, HomeScreen.class); 
      i.putExtras(intent.getExtras()); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 

ответ

2

Для того, чтобы программно отклонить уведомление, вам необходимо позвонить cancel() используя NotificationManager экземпляр, проходящий в ID, который был принят в notify() на NotificationManager (с это то, что на самом деле толкает уведомление в панель уведомлений). Вы не можете сделать это, используя Parse SDK самостоятельно, так как вам нужно будет самостоятельно контролировать население уведомлений.

Сначала вам нужно настроить NotificationManager экземпляр тогда, когда уведомление готов толкания присвоить ему значение, которое можно ссылаться позже, когда отменяющий так:

public class MyParsePushBroadcastReceiver extends ParsePushBroadcastReceiver { 

    NotificationManager mNotificationManager; 
    int notification_id = 0; 

    @Override 
    public void onPushOpen(Context context, Intent intent) { 
    Log.e("Push", "Clicked"); 
    mNotificationManager.cancel(notification_id)    
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     mNotificationManager = (NotificationManager)context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 
     super.onReceive(context, intent); 
     ... 
    } 

    @Override 
    protected Notification getNotification(Context context, Intent intent) { 
     Notification n = super.getNotification(context, intent); 
     notification_id = intent.getExtras().getInt("NOTIFICATION_TYPE"); 
     mNotificationManager.notify(notification_id, n); 
     return null; 
    } 
} 

Таким образом, вы видите, взяв контроль из NotificationManager (вместо передачи его в SDK Parse для определения некоторого неизвестного значения) мы можем точно знать, какие значения использовать при вызове отмены. Я позволяю системе построить мой объект Notification (и я получаю его с помощью super.getNotification()), но вы также можете использовать Notification builder, чтобы создать уведомление самостоятельно.