2016-07-09 6 views
0

Я начал работу с Firebase, и я следил за этой простой учебной базой: https://www.youtube.com/watch?v=B1rlT5KQ0yE.Как обновить базу данных 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. 
      } 
     }); 
    } 
+0

Возможно, имеется разрешение на использование базы данных firebase. Вы изменили его. Если нет, вы можете предпочесть это [http://stackoverflow.com/a/38199481/5610686](http://stackoverflow.com/a/38199481/5610686). Смотрите здесь только часть разрешений. –

+0

@DevQualwebs Мне нужно изменить его, чтобы делать изменения в реальном времени и сохранять в базе данных. Я прочитал ответ в представленной вами ссылке, но я не уверен, что мне нужно изменить в разделе «Правила» на моей панели управления firebase? – TheQ

+0

Да, нам нужно изменить правила базы данных firebase, если мы не выполняем никакой проверки подлинности firebase. Вы также должны увидеть это [https://firebase.google.com/docs/database/security/](https://firebase.google.com/docs/database/security/). для учебной цели вы можете установить его для публики, что показано в предыдущей ссылке. –

ответ

2

Для использования firebase реальной базы данных времени просто оставить это ...

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

Для хранения просто оставить это ...

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

Это определит, что вы можете использовать его публично нет необходимости в каких-либо проверках в конце битвы.

+0

@Dev_Qualwebs Эй, просто быстрый вопрос. Я вижу, что на моей главной странице firebase для моего приложения есть раздел «база данных». И раздел «хранения». Когда и как я буду использовать хранилище. Если бы я хотел сохранить строку у моего пользователя, технически ли она хранится в моей «базе данных»? Или его нужно перенести в мою «хранилище» в моей Firebase? Надеюсь, вы можете это прояснить? – TheQ

Смежные вопросы