کاهش خطاهای ANR هنگام پیاده‌سازی آگهی‌های تلفن همراه

چهارشنبه، ۱۰ ژوئیه ۲۰۲۴

بازخورد شما را ازطریق گزارش‌های خرابی «کنسول Play» درباره خطاهای برنامه پاسخ نمی‌دهد (ANR) مربوط به «کیت توسعه نرم‌افزار Google Mobile Ads» دریافت کردیم. پس‌از تجزیه‌وتحلیل این گزارش‌ها، روال‌های مطلوب پیاده‌سازی کیت توسعه نرم‌افزار را برای کاهش میزان خطای ANR به‌روز کردیم. روال‌های مطلوب توصیه‌شده به شرح زیر است:

  1. مقداردهی اولیه کیت توسعه نرم‌افزار تبلیغات تلفن همراه در رشته پس‌زمینه
  2. فعال کردن پرچم بهینه‌سازی برای بار کردن آگهی

۱. مقداردهی اولیه کیت توسعه نرم‌افزار تبلیغات تلفن همراه در رشته پس‌زمینه

روال مطلوب قبلی ما این بود که پرچم مانیفست 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 نیازی نیست.

۲. فعال کردن پرچم بهینه‌سازی برای بار کردن آگهی

با فعال کردن پرچم مانیفست OPTIMIZE_AD_LOADING، می‌توانید اکثر وظایف بارگیری آگهی را به یک رشته پس‌زمینه منتقل کنید. توصیه می‌کنیم این پرچم را در فایل AndroidManifest.xml برنامه‌تان فعال کنید تا وقوع خطای «برنامه پاسخ نمی‌دهد» ناشی از بار کردن آگهی کاهش یابد.

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

همه برنامه‌های نمونه Android خود را به‌روز کرده‌ایم تا این روال‌های مطلوب را پیاده‌سازی کنیم. برای جزئیات بیشتر درباره پرچم‌های مقداردهی اولیه و بهینه‌سازی، به شروع به کار و بهینه‌سازی مقداردهی اولیه و بار کردن آگهی مراجعه کنید. اگر سؤالی دارید یا به راهنمایی بیشتری نیاز دارید، با ما تماس بگیرید.

برچسب‌ها: ad-manager، admob، android، mobile-ads-sdk