我在制作中有一个有GCM通知的应用。有两个级别的用户:常规用户和特权用户。
现在,每次用户登录时,我都会将注册ID存储在我的数据库中。当用户注销时,我删除了注册ID。这很好。
但是,当用户没有注销时,删除/重新安装应用程序并以不同类型的用户身份登录(例如,之前是常规用户,现在是特权用户,反之亦然),他会收到他不应该发送的通知。接受。
或者如果他以新用户(常规用户或特权用户)身份登录,他会多次收到相同的通知。我猜这是因为旧的注册ID仍在数据库中,并且还有一个新的注册ID。
我该如何避免这种情况? Android文档显示未建议调用unregister方法。
答案 0 :(得分:0)
我将注册ID存储在我的数据库中==>这应该保存在服务器上
当用户未注销时==>您需要维护此
的会话对象删除/重新安装应用程序&以不同类型的用户身份登录==>在服务器端添加检查以禁止插入两次相同的值。只需把那个专栏搞清楚。
如果他以新用户(常规用户或特权用户)身份登录,他会多次收到相同的通知。 ==>您需要使用唯一ID标识用户。
提议的解决方案
表:服务器上的LoggedInUsers:[UserID(PK),GCM_ID,UserType]
Login(UserID,GCM_ID,UserType)
if(UserID does not exist in your onLine DataBse)
{
Insert(UserID,GCM_ID,UserType);
}
if(UserID exist in your onLine DataBse)
{
Update(UserID,GCM_ID,UserType)
}
LogOut(UserID)
{
deleteUser(UserID);
}
希望这有帮助。欢呼!