react-native-firebase 라이브러리를 업데이트하면서 react-native-firebase@app, react-native-firebase@messaing 등 라이브러리 업데이트도 같이 해줬다.
2020년 11월 17일자로, 우리 앱 기준으로
react-native-firebase@app v9.0.0
react-native-firebase@messaging v8.0.1
react-native-firebase@analytics v8.0.1
react-native-firebase@crashlytics v8.5.2
react-native-firebase@dynamicLink v7.5.13
으로 업그레이드를 해줬다.
근데 여태까지 잘왔던 messaging이 Release Mode에서 messaging이 안오는 현상이 발생함. ( Debug 빌드에서는 잘됨 )
Release라 디버깅도 제대로 안되고, android studio를 켜서 logcat으로 확인하니 아래와 같은 에러가 뜸.
W/Firebase-Installations: Error when communicating with the Firebase Installations server API. HTTP response: [403 Forbidden: { "error": { "code": 403, "message": "Request from this Android client application [budleId] are blocked.", "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.Help", "links": [ { "description": "Google developers console API key", "url": "https://console.cloud.google.com/apis/credentials" } ] } ] } } ]
E/Firebase-Installations: Firebase options used while communicating with Firebase server APIs: [apiKey], [appId], E/Firebase-Installations: Firebase Installations can not communicate with Firebase server APIs due to invalid configuration. Please update your Firebase initialization process and set valid Firebase options (API key, Project ID, Application ID) when initializing Firebase.
Firebase Github 이슈 확인
Firebase 8.4.6 버전에서 이미 유사한 이슈가 있었던 것 같다. 저 링크를 타고 가봄.
특별히 별다른 해결책은 찾지 못함.
GoogleServices.json 다시 다운로드 받기
구글 파이어베이스 콘솔에 접속해서,
톱니바퀴 아이콘 > 프로젝트 설정을 클릭한다.
google-services.json을 다시 다운받아서 Project > android > app에 기존 google-services.json을 대체한다.
이렇게해서 해결되는 사람도 있는데 나는 이렇게 바꿔도 안되었음...
Google Cloud Platform 홈페이지 접속
그래서 위에 에러로그 박스에 뜬 링크로 가보았다.
예전에 firebase console에서 만들었던 API key가 보인다.
안드로이드 키가 문제가 있어보이므로 Android key를 클릭하면,
SHA-1 서명 인증서 디지털 지문을 빌드별로 설정해 놓은 리스트가 보인다.
먼저 본인이 설정해 놓은 SHA-1 지문이 유효한 것인지 확인해본다.
[ 앱의 SHA-1, SHA-256 지문 확인 방법 ]
- debug용 keystore 지문 확인
$keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
- release용 keystore 지문 확인
$keytool -list -v -alias [alias이름] -keystore [release.keystore의 경로]
command창에서 입력하면 SHA-1, SHA-256 등의 지문을 확인할 수 있다.
alias, release.keystore는 초기에 뭘로 설정해 놓았는지 알아야한다.
그리고 구글 클라우드 플랫폼에 등록되어 있는 SHA-1 지문과 아래의 firebase console에 등록되어 있는 지문과 일치하는 지도 꼼꼼히 확인해본다.
( 내 케이스는 저 SHA-1 지문이 복합적으로 꼬여있어서 안되었던 것이다..ㅜㅜ 완전 삽질함.)
API 설정 변경 후 저장을 생활화
만약 SHA-1 지문을 추가하거나 수정, 삭제 한다면 하고나서 반드시 아래에 '저장'을 눌러준다.
나는 SHA-1 지문 바꿨는데 왜 지문이 다시 바꼈지? 했는데 저장을 안 누른 모양이다.
알아서 되는 줄...후
참고로 stack overflow에 의하면 키 제한 > Firebase Installation API를 제한을 걸어주면 에러가 해결 된다는 말도 있던데 나는 해도 별 반응이 없었다.
SHA-1 지문 제대로 맞추고 google-services.json 다시 다운받아서 넣어주고 하니 해결되었다.