我有一个cordova应用程序,当用户登录新的“app registrationId”被发送到服务器并保存在数据库中以供进一步使用(当app用户收到来自其他人的消息时),但是当用户注销时我想清除所有gcm中的待处理消息,因此如果其他用户登录,则他不会收到以前的用户通知。
有没有办法在GCM中这样做?或者我的情况完全错了!?
感谢。
答案 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,则显示通知,否则忽略该消息。
有了这个,如果另一个用户登录并且推送被发送到该特定注册令牌,您的应用程序将处理它,并且不会显示任何不是相应用户的详细信息。
但是,这意味着只有原始用户登录后,您的应用才会显示通知。
无论如何,它仍然是您正在瞄准的行为的有效解决方法。希望有道理。干杯!