Development record of developer who study hard everyday.

레이블이 Realtime Databasae인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Realtime Databasae인 게시물을 표시합니다. 모든 게시물 표시
, , , , ,

안드로이드 Firebase realtime database 사용법 예제

 안드로이드 Firebase Realtime Database 사용법 및 예제

안드로이드 블로그

내가 출시한 "배구배구"라는 어플이 있다.

여기서 내가 좋아하는 배구 팀을 설정하면 그 팀의 인스타 게시글을 가져와서 보여주는 기능이 존재한다.

1년 전까지만해도 웹뷰에서 자바스크립트를 허용한 후에 Jsoup이란 라이브러리로 동적페이지를 크롤링하여 서비스를 제공했다.

하지만 문제가 생겼다.

이유는 잘 모르겠으나 1년전부터 웹뷰를 통한 크롤링이 막혔다.

그래서 그 동안 여러가지 방법을 생각했지만 신입으로 회사에 들어와서 일을 하느라고 정신이 없었다.

올해들어 다행히 일이 좀 비어서 곰곰히 생각한 후 다른 방식을 생각해보았다.

일단, 인텔리제이에서 셀레니움이란 라이브러리로 인스타에서 데이터를 추출한 후, json파일을 만든다.

그리고 json 파일을 Firebase Realtime Database에 올려서 그 데이터를 앱에서 사용하는 것이다.

여러 난관이 있었지만 어쨌든 지금은 성공적으로 마쳤다... ㅋㅋ

배구어플

                                                                                      


그럼 이제, 파이어베이스 리얼타임 데이터베이스를 사용해보자.


1. Firebase 콘솔에 프로젝트 등록하기

링크를 참고하세요


2. Realtime Database 만들기

Realtime Database 만들기

왼쪽메뉴 "Realtime Database 클릭" - "데이터메이스 만들기" 클릭


3. Json 파일 넣어주기

연습하는거니까 "테스트모드"로 만들어주자.

이제 사실상 끝났다....

코드상에서 데이터를 Realtime Database에 넣어줄 사람은 여기서 끝났고

나는 json파일로 데이터를 통째로 넣어줄거라서 json 파일을 불러와서 Realtime Database에 넣어주기만하면된다.

Realtime Database에 데이터 추가


4. Realtime Databse에서 데이터 조회하기

.json 파일을 Realtime Database에 넣어주었기 때문에 코드상에서 조회하여 데이터를 UI에 뿌려주면 된다.


5. dependency 추가

implementation 'com.google.firebase:firebase-database'

앱수준의 build.gradle에 dependency를 추가한다.


6. DataReference 객체 만들기

public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";

//firebase - realtime database
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference conditionRef = mRootRef.child("Insta");
}

Realtime Database에서 데이터를 조회할 때 사용할 DatabaseReference 객체를 만들어준다.

너무나 직관적이라서 설명은 따로 안해도 될거 같다.

mRootRef에서 꼬리에 꼬리를 물듯 child를 찾아가면 된다.


7. ValueEventListener 등록하기

conditionRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Map<String, Object> resultMap = (Map<String, Object>) snapshot.getValue();
if(resultMap != null) {
dataSnapshot.getValue(String.class);
} else {
Log.d(TAG, "onDataChange: resultMap is null");
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

addValueEventListener()로 ValueEventListener를 등록해주었다.

이제 Realtime Database의 값이 변할 때마다 이 리스너가 호출된다.

onDataChange()에서 dataSnapshot.getValue() 방식으로 값을 가져오면 되고 db에 문제가 발생할시 onCancelled()가 호출된다.

db에 값을 넣어줄 때는 conditionRef.setValue("값"); 을 하면된다.


파이어베이스 리얼타임데이터베이스의 기본인 데이터조회와 데이터삽입에 대해 알아보았다.

너무 너무 간단하고 쉬워서 감탄했다...ㅋㅋ

Share:
Read More