我正在开发一个小型的android项目,我需要有关通知的帮助。 因此,就像多个用户将使用相同的设备一样。
是否有可能在同一设备和没有数据库的用户之间交换通知?我的意思是,根据用户名和密码发送通知?
答案 0 :(得分:0)
因此,您在离线应用上的同一设备上有多个用户。
首先需要实施登录系统来记录用户。因此,每次用户想要使用该应用程序时,他都必须登录。
然后,您希望用户能够在彼此之间交换通知。 因此,假设用户A向用户B发送通知。您只需将发件人作为用户A和接收者用户B存储通知。然后,当用户B登录时,检查是否存在他是接收者的存储通知并显示它对他来说。
使用本地数据库会更容易,但您可以使用共享首选项实现此目的。
你有两个对象:
您可以使用Gson将它们序列化为Json文件,以将它们存储为共享首选项中的String。
通知对象
public class Notification{
public int senderId;
public int receiverId;
public String message;
}
用户强>
public class User{
public int id;
public String name;
public String password;
}
登录时:
List<User> users; // All the users
List<Notification> notifications; // All the notifications
User user; // current user
for(Notification n : notifications){
if (n.receiverId == user.id){
displayNotification(n, users)
}
}
private void displayNotification(Notification n, List<User> users){
User sender = getUserFromId(n.senderId, users);
// You can now display a notification like:
// Sender <sender.name> wants to notifify you about <n.message>
}
private User getUserFromId(int id, List<User> users){
for(User u : users){
if (u.id == id)
return u;
}
return null;
}
序列化/反序列化列表:
List<Notification> notifications;
Gson gson = new Gson;
// Serialise
String json = gson.toJson(notifications);
// Deserialise
notifications = gson.fromJson(json, new TypeToken<List<Notification>>(){}.getType());