2024년 7월 10일 수요일
Google 모바일 광고 SDK와 관련된 애플리케이션 응답 없음(ANR) 오류에 관한 Play Console 비정상 종료 보고서를 통해 의견을 보내주셨습니다. 이러한 보고서를 분석한 후 SDK 구현 권장사항을 업데이트하여 ANR 발생률을 줄였습니다. 권장사항은 다음과 같습니다.
- 백그라운드 스레드에서 모바일 광고 SDK 초기화
- 광고 로드 최적화 플래그 사용 설정
1. 백그라운드 스레드에서 모바일 광고 SDK 초기화
이전 권장사항은 OPTIMIZE_INITIALIZATION 매니페스트 플래그를 지정하는 것이었습니다. 하지만 다른 메서드 호출을 동기식으로 처리하도록 MobileAds를 준비하려면 호출 스레드에서 일부 작업이 여전히 필요합니다.
이제 백그라운드 스레드에서 MobileAds.initialize()를 호출하여 호출 스레드에 필요한 작업이 백그라운드에서 실행되도록 하는 것이 좋습니다.
import com.google.android.gms.ads.MobileAds import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) CoroutineScope(Dispatchers.IO).launch { // Initialize the Google Mobile Ads SDK on a background thread. MobileAds.initialize(this@MainActivity) {} runOnUiThread { // Load an ad on the main thread. loadAd() } } } }
참고: 백그라운드 스레드에서 MobileAds.initialize()를 호출할 때 OPTIMIZE_INITIALIZATION 매니페스트 플래그는 더 이상 필요하지 않습니다.
2. 광고 로드 최적화 플래그 사용 설정
OPTIMIZE_AD_LOADING 매니페스트 플래그를 사용 설정하면 대부분의 광고 로드 작업을 백그라운드 스레드로 오프로드할 수 있습니다. 광고 로드로 인해 ANR이 발생하는 것을 줄이려면 앱의 AndroidManifest.xml 파일에서 이 플래그를 사용 설정하는 것이 좋습니다.
<manifest>
...
<application>
...
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
android:value="true"/>
</application>
</manifest>Google은 이러한 권장사항을 구현하기 위해 모든 Android 예시 앱을 업데이트했습니다. 초기화 및 최적화 플래그에 관한 자세한 내용은 시작하기 및 초기화 및 광고 로드 최적화를 참고하세요. 궁금한 점이 있거나 도움이 더 필요하면 Google에 문의하세요.
라벨: ad-manager, admob, android, mobile-ads-sdk