تقليل أخطاء ANR عند تنفيذ إعلانات الأجهزة الجوّالة

الأربعاء 10 يوليو 2024

لقد تلقّينا ملاحظاتك من خلال تقارير الأعطال في Play Console بشأن أخطاء "التطبيق لا يستجيب" (ANR) المرتبطة بحزمة "SDK لإعلانات Google على الأجهزة الجوّالة". بعد تحليل هذه التقارير، عدّلنا أفضل الممارسات المتعلّقة بتنفيذ حزمة SDK لتقليل نِسب أخطاء ANR. في ما يلي أفضل الممارسات المقترَحة:

  1. بدء إعداد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" في سلسلة مهام في الخلفية
  2. تفعيل علامة التحسين لتحميل الإعلانات

1. إعداد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" في سلسلة مهام في الخلفية

كانت أفضل ممارساتنا السابقة هي تحديد علامة البيان 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، يمكنك نقل معظم مهام تحميل الإعلانات إلى سلسلة مهام في الخلفية. ننصحك بتفعيل هذه العلامة في ملف AndroidManifest.xml الخاص بتطبيقك لتقليل حدوث أخطاء ANR الناتجة عن تحميل الإعلانات.

<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