Ad Load Errors

In cases where an ad fails to load, a callback is called which provides a LoadAdError object.

For an AdView, the following is called:

Here is a code snippet that illustrates the information available when an ad fails to load:

Java

@Override
public void onAdFailedToLoad(LoadAdError error) {
  // Gets the domain from which the error came.
  String errorDomain = error.getDomain();
  // Gets the error code. See
  // https://developers.google.com/android/reference/com/google/android/gms/ads/AdRequest#constant-summary
  // for a list of possible codes.
  int errorCode = error.getCode();
  // Gets an error message.
  // For example "Account not approved yet". See
  // https://support.google.com/admob/answer/9905175 for explanations of
  // common errors.
  String errorMessage = error.getMessage();
  // Gets additional response information about the request. See
  // https://developers.google.com/admob/android/response-info for more
  // information.
  ResponseInfo responseInfo = error.getResponseInfo();
  // Gets the cause of the error, if available.
  AdError cause = error.getCause();
  // All of this information is available using the error's toString() method.
  Log.d("Ads", error.toString());
}

Kotlin

override fun onAdFailedToLoad(error: LoadAdError) {
  // Gets the domain from which the error came.
  val errorDomain = error.domain
  // Gets the error code. See
  // https://developers.google.com/android/reference/com/google/android/gms/ads/AdRequest#constant-summary
  // for a list of possible codes.
  val errorCode = error.code
  // Gets an error message.
  // For example "Account not approved yet". See
  // https://support.google.com/admob/answer/9905175 for explanations of
  // common errors.
  val errorMessage = error.message
  // Gets additional response information about the request. See
  // https://developers.google.com/admob/android/response-info for more
  // information.
  val responseInfo = error.responseInfo
  // Gets the cause of the error, if available.
  val cause = error.cause
  // All of this information is available using the error's toString() method.
  Log.d("Ads", error.toString())
}

This information can be used to more accurately determine what caused the ad load to fail. In particular, for errors under the domain MobileAds.ERROR_DOMAIN, the message can be looked up in this help center article for a more detailed explanation and possible actions that can be taken to resolve the issue.

Debug common error logging messages

In version 23.5.0 of the Google Mobile Ads SDK, verbose logging was enhanced to include a stack trace of where the ad fails to load. These message don't indicate a crash, but rather identify the unique source of the error. The following table provides common error logs, descriptions, and suggested actions for resolution:

Error log Description Suggested action(s)
com.google.android.gms.ads.nonagon.render.cp: * The ad server did not return an ad or any mediation ad sources to request. For details of common onboarding issues of this type, see Resolve common onboarding issues.
com.google.android.gms.ads.nonagon.render.e: * All ad sources in the mediation waterfall failed to load. The specific error represents the last ad source that failed. For details about logging each mediation ad source's failure reason, see Response Info.
com.google.android.gms.ads.internal.util.*: Unable to obtain a JavascriptEngine. The ad request was unsuccessful because WebView is not allowed in privileged processes.
  • Check your internet settings.
  • Remove android:sharedUserId="android.uid.system" and install app as system app.
The ad request was unsuccessful because of a slow network connection. Try improving your internet connection and try again.
com.google.android.gms.ads.nonagon.load.a The ad request timed out.
com.google.android.gms.ads.internal.util.*: Error while connecting to ad server: Unable to resolve host "pubads.g.doubleclick.net": No address associated with hostname The ad request was unsuccessful due to network connectivity.
com.google.android.gms.ads.internal.util.*: Error building request URL: Cannot determine request type. Is your ad unit id correct? The ad unit ID did not match an expected regular expression. Check if your ad unit ID is correct.
com.google.android.gms.ads.internal.render.bt: Unable to instantiate mediation adapter class. The Google Mobile Ads SDK can't find the mediation adapter.
  • Diagnose which adapters the Google Mobile Ads SDK can't find using View available adapters in ad inspector.
  • Add missing adapters to your project. To read instructions for how to complete this step for each ad source, see Network details.