Mengurangi ANR saat menerapkan iklan seluler

Rabu, 10 Juli 2024

Kami telah menerima masukan Anda melalui laporan error Konsol Play terkait error Aplikasi Tidak Merespons (ANR) yang terkait dengan Google Mobile Ads SDK. Setelah menganalisis laporan ini, kami memperbarui praktik terbaik penerapan SDK untuk mengurangi rasio ANR. Praktik terbaik yang direkomendasikan adalah sebagai berikut:

  1. Melakukan inisialisasi SDK iklan seluler di thread latar belakang
  2. Mengaktifkan tanda pengoptimalan untuk pemuatan iklan

1. Melakukan inisialisasi SDK Iklan Seluler di thread latar belakang

Praktik terbaik kami sebelumnya adalah menentukan flag manifes OPTIMIZE_INITIALIZATION. Namun, beberapa pekerjaan pada thread panggilan masih diperlukan untuk menyiapkan MobileAds agar dapat menangani panggilan metode lain secara sinkron.

Kami sekarang merekomendasikan untuk memanggil MobileAds.initialize() di thread latar belakang, sehingga pekerjaan yang diperlukan pada thread panggilan dapat dilakukan di latar belakang.

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()
      }
    }
  }
}

Catatan: Saat memanggil MobileAds.initialize() di thread latar belakang, flag manifes OPTIMIZE_INITIALIZATION tidak lagi diperlukan.

2. Aktifkan flag pengoptimalan untuk pemuatan iklan

Dengan mengaktifkan flag manifes OPTIMIZE_AD_LOADING, Anda dapat mengalihkan sebagian besar tugas pemuatan iklan ke thread latar belakang. Sebaiknya aktifkan flag ini di file AndroidManifest.xml aplikasi Anda untuk mengurangi terjadinya pemuatan iklan yang menyebabkan ANR.

<manifest>
  ...
  <application>
      ...
      <meta-data
          android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
          android:value="true"/>
  </application>
</manifest>

Kami telah memperbarui semua aplikasi contoh Android untuk menerapkan praktik terbaik ini. Untuk mengetahui detail selengkapnya tentang flag inisialisasi dan pengoptimalan, lihat Memulai dan Mengoptimalkan inisialisasi dan pemuatan iklan. Hubungi kami jika ada pertanyaan atau memerlukan bantuan tambahan.

Label: ad-manager, admob, android, mobile-ads-sdk