수색…


Android에 실시간 데이터베이스 추가

  1. 설치를 완료하고 앱을 Firebase에 연결하십시오.
    그러면 Firebase에 프로젝트가 생성됩니다.

  2. Firebase Realtime Database에 대한 의존성을 모듈 수준 build.gradle 파일에 build.gradle 하십시오 :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Firebase 데이터베이스 규칙 구성

이제 Android에서 실시간 데이터베이스로 작업 할 준비가되었습니다.

예를 들어, Hello World 메시지를 message 키 아래의 데이터베이스에 씁니다.

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

setValue를 사용하여 데이터 저장

setValue() 메소드는 자식 노드를 포함하여 지정된 위치의 데이터를 덮어 씁니다.

이 방법을 사용하여 다음을 수행 할 수 있습니다.

  1. 사용 가능한 JSON 유형에 해당하는 패스 유형은 다음과 같습니다.
  • 더블
  • 부울
  • Map <String, Object>
  • 명부
  1. 사용자 정의 Java 객체를 정의하는 클래스에 인수가없는 기본 생성자가 있고 속성을 할당 할 공용 getter가있는 경우 전달합니다.

이것은 CustomObject의 예입니다.
먼저 객체를 정의하십시오.

@IgnoreExtraProperties
public class User {

    public String username;
    public String email;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

그런 다음 데이터베이스 참조를 가져 와서 값을 설정하십시오.

   User user = new User(name, email);
   DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
   mDatabase.child("users").child(userId).setValue(user);

Firebase에서 데이터 삽입 또는 데이터 검색 예제

이해하기 전에 프로젝트가 firebase와 통합되도록 일부 설정을 수행해야합니다.

  1. Firebase 콘솔에서 프로젝트를 만들고 콘솔에서 google-service.json 파일을 다운로드하여 프로젝트의 앱 수준 모듈에 넣습니다 . 콘솔에서 프로젝트 만들기 링크를 클릭하십시오.

  2. 이 후 우리 프로젝트에 어떤 의존성을 추가 할 필요가있다.

  • 먼저 프로젝트 레벨 gradle에 클래스 경로를 추가합니다.

    classpath 'com.google.gms:google-services:3.0.0'

  • 그리고 그 응용 프로그램 수준에서 플러그 접속 식을 적용한 후에, dependancy 단면도의 밑에 그것을 쓰십시오,

    apply plugin: 'com.google.gms.google-services

  • 의존성 섹션에 앱 레벨 그래 플을 추가해야하는 더 많은 의존성이 있습니다.

    compile 'com.google.firebase:firebase-core:9.0.2'

    compile 'com.google.firebase:firebase-database:9.0.2'

  • 이제 firebase 데이터베이스에 데이터를 삽입하기 시작합니다. 먼저 인스턴스를 생성해야합니다.

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    FirebaseDatabase 객체를 생성 한 후에 데이터베이스에 데이터를 삽입하기위한 DatabaseReference를 생성 할 것이고,

    DatabaseReference databaseReference = database.getReference().child("student");

    여기서 student 는 테이블이 데이터베이스에 존재하면 테이블에 데이터를 삽입하고 그렇지 않으면 학생 이름이있는 새 테이블을 작성한 후 databaseReference.setValue(); 사용하여 데이터를 삽입 할 수 있습니다 databaseReference.setValue(); 다음과 같은 기능,

    HashMap<String,String> student=new HashMap<>();

    student.put("RollNo","1");

    student.put("Name","Jayesh");

    databaseReference.setValue(student);

    여기에 데이터를 hasmap으로 삽입합니다.하지만 모델 클래스로 설정할 수도 있습니다.

  • firebase에서 데이터를 검색하는 방법을 시작합니다. 여기서는 데이터베이스의 읽기 값으로 addListenerForSingleValueEvent를 사용하고 있습니다.

      senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  if(dataSnapshot!=null && dataSnapshot.exists()){
                      HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class);
                      Log.d("Student Roll Num "," : "+studentData.get("RollNo"));
                      Log.d("Student Name "," : "+studentData.get("Name"));
                  }
              }
    
              @Override
              public void onCancelled(DatabaseError databaseError) {
    
              }
          });
    

firebase에서 값 가져 오기

  1. 클래스를 생성하고 가져 오기를 추가하여 정보를 파싱합니다.
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;

//Declaration of firebase references
private DatabaseReference mDatabase;

//Declaration of firebase atributtes
public String uID;
public String username;
public String email;

@IgnoreExtraProperties
public class User {

    //Default constructor
    public User() {

        //Default constructor required for calls to DataSnapshot.getValue(User.class)
        mDatabase = FirebaseDatabase.getInstance().getReference();

        //...
    }

    //...
}
  1. addListenerForSingleValueEvent() 를 데이터베이스 참조에 추가하십시오.
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

//...

public void getUser(String uID){

    //The uID it's unique id generated by firebase database
    mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
            new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. onDataChange() 이벤트에서 Firebase 정보로 클래스에 영향을줍니다 :
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Inflate class with dataSnapShot
            Users user = dataSnapshot.getValue(Users.class);

            //...
        }
  1. 마지막으로 firebase 클래스에서 다른 atributtes를 정상적으로 얻을 수 있습니다.
//User inflated
Users user = dataSnapshot.getValue(Users.class);

//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;

모범 사례

  1. firebase는 32 개의 다른 하위 레벨을 지원합니다. 그러면 참조가 잘못 작성되어 간단히 개인 비공개 참조를 피할 수 있습니다.
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();

//...

public void getUser(String uID){

    //Call our reference
    userRef.child(uID).addListenerForSingleValueEvent(
        new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. onCancelled() 이벤트는 사용자가 데이터베이스 규칙에 onCancelled() 참조에 액세스 할 수 없을 때 호출됩니다. 필요한 경우이 예외를 제어하는 ​​관련 코드를 추가하십시오.

자세한 내용은 공식 문서 를 참조하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow