我刚刚在我的应用中实现了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);
}
}
答案 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来创建通知。