如何实时更新firebase数据库?

时间:2016-07-09 10:19:30

标签: android firebase firebase-realtime-database

我开始使用Firebase,我在这里遵循了这个简单的firebase教程:https://www.youtube.com/watch?v=B1rlT5KQ0yE

我创建了一个简单的活动,当您按下“Sunny”按钮时,它显示晴天,将字符串晴朗发送到Firebase数据库,然后将其发送回我的应用程序并填写显示晴天的文本视图。所以这没关系。

但是,当我检查我的firebase数据库时,它没有添加任何内容。

而且,当我在Firebase数据库中写入内容时,它不会实时更改文本视图。

这是我的活动代码。

public class MainActivity extends AppCompatActivity
{
    private TextView myTextView;
    private Button sunnyButton;
    private Button foggyButton;
    private Firebase mRef;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        myTextView = (TextView) findViewById(R.id.textViewCondition);
        sunnyButton = (Button) findViewById(R.id.sunnyButton);
        foggyButton = (Button) findViewById(R.id.FoggyButton);

        //Firebase
        mRef = new Firebase("https://example-e04be.firebaseio.com/weather");

        mRef.addValueEventListener(new ValueEventListener()
        {
            //onDatachange will get fired everytime there is a change in your firebase database. CHANCE IN YOUR DATABASE!!!
            @Override
            public void onDataChange(DataSnapshot dataSnapshot)
            {
                String text = dataSnapshot.getValue(String.class);
                myTextView.setText(text);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

        sunnyButton.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                mRef.setValue("sunny");//So "Foggy" string will be sent to our DB. Which will update our DB, then in mRef.addValue...will be called and our textfield will be called. Like a small loop.
            }
        });
    }

1 个答案:

答案 0 :(得分:2)

对于使用firebase实时数据库,请留下这个......

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

对于存储,请留下这个......

service firebase.storage {
  match /b/project-[your_project_number].appspot.com/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

它将定义您可以公开使用它,而不需要在firebase端进行任何验证。