首页 > 解决方案 > 如何初始化 Firebase 库?

问题描述

我想将聊天消息保存到 Firebase 实时数据库。

在此之前,必须初始化 Firebase 库。这是如何运作的?代码 Firebase.AndroitSetContext(this); 不幸的是已经过时了。

后续的创建代码如下:

        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);

有人能帮我吗?

标签: androidfirebasefirebase-realtime-database

解决方案


new Firebase(...)Firebase.AndroitSetContext (this)指向 Firebase SDK 的一个非常的版本(2016 年 5 月之前发布)。我强烈建议您查找更新的教程,或者从 Firebase 自己的文档codelab开始,它(方便地)也用于构建聊天应用程序。

一些细节:

  • setAndroidContext()不再需要调用,因为它由库(或其他 API 调用)自动确定需要的位置。
  • 这些天来的电话new Firebase(...)看起来像。FirebaseDatabase.getInstance().getReference()不再需要 URL,因为它会google-services.json在构建期间自动从文件中提取。

但如前所述,我强烈建议从更新的教程或文档开始。


推荐阅读