如何清除GCM中的待处理消息?

时间:2016-10-14 11:49:46

标签: android cordova google-cloud-messaging firebase-cloud-messaging

我有一个cordova应用程序,当用户登录新的“app registrationId”被发送到服务器并保存在数据库中以供进一步使用(当app用户收到来自其他人的消息时),但是当用户注销时我想清除所有gcm中的待处理消息,因此如果其他用户登录,则他不会收到以前的用户通知。

有没有办法在GCM中这样做?或者我的情况完全错了!?

感谢。

1 个答案:

答案 0 :(得分:1)

注册令牌对应于单个应用实例(绑定到设备),而不是专门针对单个用户。

之前我也在搜索过这个主题,通常的解决方案是让您的有效负载中包含用户标识符,让我们说 month = calendar.get(Calendar.MONTH); day = calendar.get(Calendar.DAY_OF_MONTH); year1 = calendar.get(Calendar.YEAR); Log.d("8999",month+" "+day+" "+year1); DatePickerDialog datePickerDialog = new DatePickerDialog(Reminder.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { et_cal.setText("" + dayOfMonth + " - " + monthOfYear+1 + " - " + year); Toast.makeText(Reminder.this, "" + dayOfMonth + " - " + monthOfYear + " - " + year, Toast.LENGTH_SHORT).show(); } },year1,month,day); datePickerDialog.show(); 。然后在您的客户端应用中,您必须检查userid是否与当前登录的用户匹配。如果为true,则显示通知,否则忽略该消息。

有了这个,如果另一个用户登录并且推送被发送到该特定注册令牌,您的应用程序将处理它,并且不会显示任何不是相应用户的详细信息。

但是,这意味着只有原始用户登录后,您的应用才会显示通知。

无论如何,它仍然是您正在瞄准的行为的有效解决方法。希望有道理。干杯!