Zmniejszanie liczby błędów ANR podczas wdrażania reklam mobilnych

Środa, 10 lipca 2024 r.

Otrzymaliśmy Twoją opinię w raportach o awariach w Konsoli Play dotyczącą błędów Aplikacja nie odpowiada (ANR) związanych z pakietem SDK do reklam mobilnych Google. Po przeanalizowaniu tych raportów zaktualizowaliśmy sprawdzone metody wdrażania pakietu SDK, aby zmniejszyć częstotliwość błędów ANR. Oto zalecane sprawdzone metody:

  1. Inicjowanie pakietu SDK do wyświetlania reklam mobilnych w wątku w tle
  2. Włącz flagę optymalizacji wczytywania reklam

1. Inicjowanie pakietu SDK do wyświetlania reklam mobilnych w wątku w tle

Wcześniej zalecaliśmy określenie flagi manifestu OPTIMIZE_INITIALIZATION. Jednak w wątku wywołującym nadal wymagane są pewne działania, aby przygotować MobileAds do synchronicznej obsługi innych wywołań metod.

Teraz zalecamy wywoływanie metody MobileAds.initialize() w wątku w tle, co umożliwia wykonywanie pracy wymaganej w wątku wywołującym w tle.

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

Uwaga: gdy wywołujesz MobileAds.initialize() w wątku w tle, flaga OPTIMIZE_INITIALIZATION w pliku manifestu nie jest już wymagana.

2. Włącz flagę optymalizacji wczytywania reklam

Włączenie flagi manifestu OPTIMIZE_AD_LOADING pozwala przenieść większość zadań związanych z wczytywaniem reklam do wątku w tle. Zalecamy włączenie tej flagi w pliku AndroidManifest.xml aplikacji, aby zmniejszyć liczbę błędów ANR spowodowanych wczytywaniem reklam.

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

Zaktualizowaliśmy wszystkie nasze przykładowe aplikacje na Androida, aby wdrożyć te sprawdzone metody. Więcej informacji o flagach inicjowania i optymalizacji znajdziesz w artykułach Pierwsze kroki i Optymalizowanie inicjowania i wczytywania reklam. Jeśli masz pytania lub potrzebujesz dodatkowej pomocy, skontaktuj się z nami.

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