요약 : Firebase에서 동시성 문제가 발생했다면, 네트워크와 기기의 시간 설정을 먼저 확인하자.
0. 문제가 발생한 코드
// FCM Token 받아오기
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener {
if (!it.isSuccessful) {
Log.d(TAG, "onCreate: FCM 토큰 얻기 실패", it.exception)
return@OnCompleteListener
}
// 새로운 FCM 등록 토큰을 얻음
Log.d(TAG, "onCreate: 새로운 등록 토큰 : ${it.result}")
// (생략...)
})
파이어베이스 FCM 토큰을 얻기 위해서 위와 같이 코드를 작성했는데 토큰 받아오기를 실패하기 아래와 같은 오류를 발생시켰다.
1. 오류 메시지
java.util.concurrent.ExecutionException: java.io.IOException: SERVICE_NOT_AVAILABLE
2. 오류 원인
찾아보니 크게 두 가지가 원인이 될 수 있다고 한다.
(1) 네트워크 오류
(2) FCM 토큰 등록 시간 불일치, 오류
위와 같은 이유로 동시성에 문제가 생길 때 발생하는 오류인 것 같다.
3. 해결 방법
에뮬레이터 설정 > 시스템 > 날짜 및 시간 > 네트워크 시간대 사용 을 체크해주었더니 정상적으로 토큰을 받아왔다.
예전에 네트워크 시간대 사용을 끄고, 한국 시간대로 따로 설정해준적이 있었는데 그게 오류의 원인이 된 것이었다🤦♀️
🌸결론, Firebase 동시성 오류는 네트워크와 시간 설정을 먼저 확인하자~🌸
<참고 사이트>
https://soo84.tistory.com/entry/Error-GCM-javaioIOException-SERVICENOTAVAILABLE
'Android' 카테고리의 다른 글
Android Studio 자주 쓰는 단축키 (Window/Mac) (0) | 2024.03.21 |
---|---|
[Android] android.view.InflateException: Binary XML file line #9 해결 방법 (0) | 2022.04.25 |