Firebase和通知问题

时间:2018-07-20 09:42:01

标签: android firebase firebase-realtime-database

我在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");


}

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

0 个答案:

没有答案