AI-generated Key Takeaways
-
When an ad fails to load, a callback provides a
LoadAdError
object containing details like error domain, code, message, and response information. -
You can use the
LoadAdError
information to pinpoint the cause of ad load failures and implement appropriate solutions. -
Common ad loading errors, descriptions, and troubleshooting tips can be found in the provided table, including errors related to no fills, mediation failures, network connectivity, and ad unit IDs.
-
Starting from Google Mobile Ads SDK version 23.4.0, enhanced error logging provides more context for debugging, including stack traces for identifying error sources.
In cases where an ad fails to load, a
callback
is called which provides a
LoadAdError
object.
For AdManagerAdView
, the following is called:
Kotlin
fun onAdFailedToLoad(error: LoadAdError)
Java
public void onAdFailedToLoad(LoadAdError adError);
The following example shows the information available when an ad fails to load:
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/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest#constant-summary
// for a list of possible codes.
val errorCode = error.code
// Gets an error message.
val errorMessage = error.message
// Gets additional response information about the request. See
// https://developers.google.com/ad-manager/mobile-ads-sdk/android/response-info
// 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())
}
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/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest#constant-summary
// for a list of possible codes.
int errorCode = error.getCode();
// Gets an error message.
String errorMessage = error.getMessage();
// Gets additional response information about the request. See
// https://developers.google.com/ad-manager/mobile-ads-sdk/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());
}
Debug common error logging messages
In version 23.5.0 of 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 to troubleshoot no fills, see Troubleshoot unfilled impressions. |
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. |
|
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. |
Google Mobile Ads SDK can't find the mediation adapter. |
|
com.google.android.gms.internal.ads.*: Received error HTTP response code: 403 |
Ad Manager servers rejected the request. | Try again later. If consistently reproducible, capture the request URL using ad inspector and contact support. |