[React Native] The Google Mobile Ads SDK was initialized without an application ID.
react native 프로젝트에 애드몹을 적용하려고 react-native-google-mobile-ads 패키지를 사용했다. 안드로이드에서는 정상 구동 되나, ios에서 앱이 충돌나면서 강제 종료가 되어버리는 현상이 나타났다.
Xcode에서 확인해보니 아래 에러 내용이 나왔다.
❓ 에러 내용
reason __NSCFString * "The Google Mobile Ads SDK was initialized without an application ID. Google AdMob publishers, follow instructions at https://googlemobileadssdk.page.link/admob-ios-update-plist to set a valid application ID. Google Ad Manager publishers, follow instructions at https://googlemobileadssdk.page.link/ad-manager-ios-update-plist."
애드몹 앱ID가 없다고 한다.
(app.json에는 넣어놨는데..)
💡 해결 방법
에러 내용에서 알려준대로 https://googlemobileadssdk.page.link/admob-ios-update-plist 에 접속해서, 페이지에서 알려주는 대로 설정을 한다.
전체 스니펫 부분을 복사해서 내 프로젝트 Info.plist에 붙혀넣기 해준다. GADApplicationIdentifier에는 내 애드몹 ios 앱ID로 교체해서 넣어준다.
그리고 프로젝트를 재구동하면, 앱이 정상적으로 실행되는 것을 확인할 수 있다.
🤨 의문점
1. react-native-google-mobile-ads 패키지 공식페이지(https://docs.page/invertase/react-native-google-mobile-ads#enable-skadnetwork-to-track-conversions-ios)에 나온대로 app.json에 ios_app_id, sk_ad_network_items를 설정해뒀는데, 왜 이것을 읽어들이지 못했을까.
2. 만약 네이티브 폴더 수준에서 애드몹 앱ID를 설정해주지 않은 것이 문제였다면, 왜 안드로이드는 정상 구동 되었던걸까.
app.json 수준에서 애드몹 앱ID(ios_app_id, android_app_id)를 모두 설정해놓았는데, 왜 ios는 구동이 안되고 안드로이드는 정상 구동이 되었을까. 안드로이드는 AndroidManifest.xml에서 설정을 해주지 않고 오직 app.json에서만 앱ID를 설정해놓았는데, 여전히 잘 구동된다. 참고)안드로이드 네이티브 수준 세팅법: https://developers.google.com/admob/android/quick-start?hl=ko#groovy