코딩마을방범대

[FCM] Java에서 Firebase 실시간 데이터베이스 활용하기 본문

💡 백엔드/FCM ( Firebase )

[FCM] Java에서 Firebase 실시간 데이터베이스 활용하기

신짱구 5세 2023. 7. 7. 16:45
728x90

 

이전 포스트에서 Firbase SDK를 세팅할 때 DatabaseURL을 설정했었다.

 

Firebase Console에서 Realtime Database 를 생성하면 아래처럼 링크가 설정된다!

해당 링크를 setDatabaseUrl 메소드에 넣어주면된다.

세팅 후 사용방법은 아래를 참고하면  된다.

 

 

 

 

 


 

 

 

 

 

 

데이터 저장하기

 

아래의 코드처럼 데이터를 저장했다고 가정하면,

 

@PostMapping("/fcm/data")
public void data(@RequestBody UserDTO user){
	final FirebaseDatabase database = FirebaseDatabase.getInstance();
	DatabaseReference ref = database.getReference("test/" + user.getIdx);
	ref.setValueAsync(user);
}
  1. conf에 설정된 Firebase Database 링크대로 데이터베이스를 가져와 database라는 변수에 저장
  2. 해당 데이터 베이스의 test 라는 키의 valueuser Idx 키를 가진 value에 user 오브젝트를 저장

 

Firebase Console의 데이터베이스를 보면 아래와 같이 저장된 것을 볼 수 있다!

이를 통해 Reference에 들어가는 값은 key인 것을 알 수 있다.

 

 

 

 


 

 

 

 

 

데이터 출력하기

 

Reference에 key값을 순서대로 넣어준 후 출력을 시도해보았다.

@GetMapping("/fcm/data/{idx}")
public void data(@PathVariable("idx") int idx){
	final FirebaseDatabase database = FirebaseDatabase.getInstance();
	DatabaseReference ref = database.getReference("test/" + idx);
    
	ref.addValueEventListener(new ValueEventListener() {
		@Override
		public void onDataChange(DataSnapshot dataSnapshot) {
			System.out.println(dataSnapshot);
			System.out.println("onDataChange():: "+dataSnapshot.getValue());
		}

		@Override
		public void onCancelled(DatabaseError databaseError) {
			System.out.println("The read failed: " + databaseError.getCode());
		}
	});
}

 

Key 값에 user Idx 가 확인되었고, Value에 Map 형태의 value가 잘 들어간 것을 확인할 수 있었다!

 

 

 

만약 Reference에 아무런 path값도 주지 않는다면 메인 경로에서 탐색하게 된다.

database.getReference().addValueEventListener(new ValueEventListener() {
	....

 

아래와 같이 Key값이 null인 Map의 Value에 test라는 key값을 가진 Map 데이터가 들어가있는 것으로 출력된다.

 

Firebase 데이터베이스를 통해 FCM 토큰을 관리할 수 있지 않을까도 생각해볼 수 있다.

 

 

 

 


참고사이트

Firebase Dock

 

 

 

 

728x90