停止显示活动 - 推送通知(解析)

时间:2014-11-21 03:51:45

标签: android parse-platform push-notification

我刚刚在我的应用中实现了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);
        }
    }

1 个答案:

答案 0 :(得分:2)

为了让您以编程方式解除通知,您需要使用cancel()实例调用NotificationManager来传递在NotificationManager中传递到notify()的ID(因为这是什么实际将通知推送到通知窗格中)。您不能单独使用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(而不是将其传递给Parse SDK来分配一些未知值),我们可以确切地知道在调用cancel时要使用哪些值。我让系统构建我的Notification对象(我使用super.getNotification()得到它),但您也可以自由地使用Notification builder来创建通知。