Как я могу инициализировать библиотеку Firebase? - PullRequest
0 голосов
/ 18 января 2020

Я хочу сохранить сообщение чата в базе данных Firebase в реальном времени.

Перед этим должна быть инициализирована библиотека Firebase. Как это работает? Код Firebase.AndroitSetContext (это); к сожалению устарела.

Следующий код для создания выглядит следующим образом:

        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String messageText = messageArea.getText().toString();

                if(!messageText.equals("")){
                    Map<String, String> map = new HashMap<String, String>();
                    map.put("message", messageText);
                    map.put("user", UserDetails.username);
                    reference1.push().setValue(map);
                    reference2.push().setValue(map);
                    messageArea.setText("");
                }
            }
        });

        reference1.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Map map = dataSnapshot.getValue(Map.class);
                String message = map.get("message").toString();
                String userName = map.get("user").toString();

                if(userName.equals(UserDetails.username)){
                    addMessageBox("You:-\n" + message, 1);
                }
                else{
                    addMessageBox(UserDetails.chatWith + ":-\n" + message, 2);
                }
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
    }

Следующий пример не работает:

Firebase.setAndroidContext(this);
        reference1 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.username + "_" + UserDetails.chatWith);
        reference2 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.chatWith + "_" + UserDetails.username);

Может кто-то помочь мне

1 Ответ

0 голосов
/ 18 января 2020

new Firebase(...) и Firebase.AndroitSetContext (this) указывают на очень старую версию Firebase SDK (выпущенную до мая 2016 года). Я настоятельно рекомендую найти более актуальное руководство или начать с собственной документации Firebase или codelab , которая (удобно) также занимается созданием приложения для чата.

Некоторые особенности:

  • Вызов setAndroidContext() больше не нужен, так как он автоматически определяется библиотекой (или другими вызовами API), где это необходимо.
  • Вызов new Firebase(...) выглядит как FirebaseDatabase.getInstance().getReference() в наши дни. URL больше не нужен, так как он автоматически извлекается из файла google-services.json во время сборки.

Но, как уже было сказано, я настоятельно рекомендую начать с более современного учебника или документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...