내가 구현하고자 하는 것
: 사용자의 키워드 등록 -> 파이어베이스에 키워드 데이터 저장
: FCM을 이용해 사용자에게 푸시알람 기능 구현
1. 파이어베이스에 키워드 등록
간단하다.
private FirebaseDatabase mDatabase;
private DatabaseReference mReference;
mReference = mDatabase.getReference("waang/취업키워드");
//등록버튼 클릭 - Oncreate 안에 넣는다.
addkw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(count > 10)
Toast.makeText(Employ.this, "키워드 등록은 10개까지만 가능합니다.", Toast.LENGTH_LONG).show();
else if(count > -1){
String kw = kwinput.getText().toString();
mReference.child(kw).setValue(kw);
// 키워드 구독 - 푸시알림
FirebaseMessaging.getInstance().subscribeToTopic(kw);
}
}
});
등록 버튼을 누르면, 키워드가 파이어베이스에 들어가는 것이다. 10개 제한을 걸어두었다.
파이어베이스에 데이터를 넣는 방식에는 두가지가 있다.
1) push() 함수 이용 - 데이터마다 문자열로 이루어진 Token값이 생성되며, 중복값 삽입이 가능하다.
2) setValue() 를 이용 - Token 없이 깔끔한 key값으로 삽입되지만, 중복값 삽입이 불가능하며, 기존값에서 수정이 된다.
mReference.child(kw).setValue(kw);
2. 키워드 구독 후 푸시알람
키워드 알람기능에 많은 고민을 했다.
키워드 등록을 아이디 토큰마다 생성해 하나하나 푸시알림을 보내려 하니 생각보다 복잡해질 것 같아서,
더 알아보니 Topic 구독 기능이 있었다. 아주 유용하다.
어떤 사용자가 Topic을 구독하고, 내가 FCM을 이용해 그 Topic을 구독한 사용자들에게 푸시알림을 보내는 방식이다.
코드는 아래와 같다.
// 키워드 구독 - 푸시알림
FirebaseMessaging.getInstance().subscribeToTopic(kw);
// 키워드 구독 해제
FirebaseMessaging.getInstance().unsubscribeFromTopic(kw);
3. FCM 이용
클라우드 메시징 알림 작성에 들어간다.
유의할 점: 2단계에서 '사용자 세그먼트'가 아닌 '주제'로 바꾸어, Topic을 써넣어준다.
이 주제를 구독한 사용자에게 푸시알림이 갈 것이다.
>> 결과
성공적으로 알람이 왔다. 솔직히 한번에는 안될 줄 알았는데 생각보다 잘된다.
저 알람을 클릭하면 앱으로 접속된다.
// 번외
파이어베이스의 데이터가 수정될 때마다 리스트뷰에 출력시키기!
꽤나 애를 먹었어서 기록해둔다.
파이어베이스 안의 데이터가 리스트뷰로 고대로 출력이 된다.
원리는 다음과 같다.
데이터가 수정될 때, addValueEventListener 가 실행과 동시에 onDataChange 함수로 넘어가게 된다.
이 때, adapter.clear()로 일단 리스트뷰를 싸악 초기화 시켜준 뒤,
dataSnapShot을 이용해 파이어베이스 내의 데이터를 다시 리스트뷰에다 .add() 해주는 것이다.
'프로젝트' 카테고리의 다른 글
[안드로이드 스튜디오] 엑셀 파일을 내부DB에 저장 후 불러오기 (0) | 2021.08.24 |
---|---|
[안드로이드 스튜디오] 커스텀 리스트뷰 검색기능 (0) | 2021.08.24 |
[Android Studio] 학교 홈페이지 웹 크롤링 (0) | 2021.07.15 |
학교 졸업요건+공지사항 알리미 앱 만들기_구상편 (0) | 2021.07.07 |
[Star UML] '음료 자판기' 시퀀스 다이어그램 작성 실습 (0) | 2021.05.04 |