我在Firebase中的数据库问题,我开发了一个聊天应用程序,并且可以正常工作,现在我尝试添加通知功能。
我的代码说,当用户按下发送按钮时,在单击内检查其他用户的状态(数据库中有一个用户状态表),如果它处于脱机状态,则在数据库中添加一个通知表,接收者ID为通知。
在创建方法上,我检查了通知表中是否存在与当前用户ID相同的ID,然后显示通知。
问题是第一次运行该应用程序很棒,并且在我按发送并且其他用户脱机后没有障碍的情况下显示了通知,但是此后我从数据库中删除了该通知以再次进行测试,即使我按了返回按钮返回到先前的活动,通知已添加到数据库中,即使我移至另一个应用程序,它也会将通知添加到数据库中。我找不到问题所在。
在create方法内部进行检查:
onlineOfflineUserStatus = "online";
databaseStatus = FirebaseDatabase.getInstance().getReferenceFromUrl("https://chatim-2ed18.firebaseio.com/status");
databaseStatus.child(subString).setValue(onlineOfflineUserStatus);
databaseNotification = FirebaseDatabase.getInstance().getReferenceFromUrl("https://chatim-2ed18.firebaseio.com/Notification");
databaseNotification.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if ( dataSnapshot.child(subString).exists()){
Intent intent = new Intent(getApplicationContext() , messageActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext() , 1 , intent , 0 );
Notification notification = new Notification.Builder(getApplicationContext())
.setContentTitle("New Message")
.setContentText("please press here")
.setContentIntent(pendingIntent)
.addAction(android.R.drawable.sym_action_chat, "Chat", pendingIntent)
.setSmallIcon(android.R.drawable.sym_def_app_icon)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, notification);
}else {
Log.i("the notification", " is not here ");
System.out.println("the notification is not here ...ooooo");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在内部单击fab按钮:
databaseStatus.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(subStringGetName).getValue().equals("offline")) {
addNotification();
} else {
Log.i("the status ", " is.. online");
System.out.println("the status is ... online");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
添加通知方法:
public void addNotification(){
databaseNotification.child(subStringGetName).child("From").setValue(subString);
databaseNotification.child(subStringGetName).child("To").setValue(subStringGetName);
databaseNotification.child(subStringGetName).child("Body").setValue("Hellooo");
}