Reduzir ANRs ao implementar anúncios para dispositivos móveis

Quarta-feira, 10 de julho de 2024

Recebemos seu feedback pelos relatórios de erros do Play Console sobre erros do tipo O app não está respondendo (ANRs) relacionados ao SDK do Google Mobile Ads. Depois de analisar esses relatórios, atualizamos nossas práticas recomendadas de implementação do SDK para reduzir as taxas de ANR. As práticas recomendadas são as seguintes:

  1. Inicializar o SDK de anúncio para dispositivos móveis em uma linha de execução em segundo plano
  2. Ativar a flag de otimização para o carregamento de anúncios

1. Inicializar o SDK de anúncio para dispositivos móveis em uma linha de execução em segundo plano

Nossa prática recomendada anterior era especificar a flag de manifesto OPTIMIZE_INITIALIZATION. No entanto, ainda é necessário algum trabalho na linha de execução de chamada para preparar o MobileAds para processar outras chamadas de método de forma síncrona.

Agora recomendamos chamar MobileAds.initialize() em uma linha de execução em segundo plano, permitindo que o trabalho necessário na linha de execução de chamada aconteça em segundo plano.

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

Observação: ao chamar MobileAds.initialize() em uma linha de execução em segundo plano, a flag de manifesto OPTIMIZE_INITIALIZATION não é mais necessária.

2. Ativar a flag de otimização para carregamento de anúncios

Ao ativar a flag de manifesto OPTIMIZE_AD_LOADING, você pode transferir a maioria das tarefas de carregamento de anúncios para uma linha de execução em segundo plano. Recomendamos ativar essa flag no arquivo AndroidManifest.xml do app para reduzir a ocorrência de carregamento de anúncios que causam ANRs.

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

Atualizamos todos os nossos apps de exemplo do Android para implementar essas práticas recomendadas. Para mais detalhes sobre as flags de inicialização e otimização, consulte Começar e Otimizar a inicialização e o carregamento de anúncios. Entre em contato se tiver dúvidas ou precisar de mais ajuda.

Rótulos: ad-manager, admob, android, mobile-ads-sdk