- [Why am I not getting ads back for all formats?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#1)
- [What does a good descriptionUrl look like?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#2)
- [Why am I receiving the error "Ad response does not contain a valid ad type"?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#3)
- [Do you have an Ad Manager video ad tag that I can use for testing?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#4)
- [Should I set the adSlotWidth and adSlotHeight to the same values
  as the sz in my Ad Manager ad tag?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#5)
- [The demo ad tag looks great, but when I switch it with my ad tag,
  no ad appears.](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#7)
- [I want to request ads using the same tag more than once, but I
  only get ads for my first request. How do I fix this?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#8)
- [How do I request overlay and full slot AdSense ads using the IMA
  SDK?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#9)
- [I'm getting an "Invalid clickthrough URL" error when I click on my
  ad. What could be the cause?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#10)
- [In the Android and iOS SDKs, is there a way to make the entire video
  ad clickable?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq#11)
- [Why do I see a "VAST Document Empty" error?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#12)
- [Can I change the size/text of the "Skip Ad" box or other UI elements?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#13)
- [Why am I getting "No virtual method" errors at runtime?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#14)
- [Can I use multiple threads to initialize and manipulate the UI?](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/faq.md.txt#18)

*** ** * ** ***

Why am I not getting ads back for all formats?
:
    The test ad tags are set up to always return ads for valid requests. This is
    meant to facilitate integration and make it easier to test how your player
    requests and renders ads. However, ads are not always available in every
    format for your site, account, or ad unit. If your integration is working
    properly for the test tag but not for your own tag, the cause may be one of
    the following:

    - You're serving videos of an unsupported format to your environment. For example, you're serving only HTML5 ads to iOS or Android.
    - If you're using Ad Manager, your publisher ID may not have any ads targeted to it at this time. Also, ensure that you have approved the relevant ads and creatives in Ad Manager.
    - If you're using AdSense, the targeting criteria for your site or test page may not have any active advertisements. The most common cause is the use of private, uncrawled websites.
    - If you're using Ad Exchange Network Partner Management and `descriptionURL` is not set or is not on the owned or operated domains management list, ads do not serve to this.
    - Check the *minCPM* thresholds defined in Ad Exchange Video. A fairly high CPM may result in very low fill rates. To correct this, try either removing the minCPM or removing the ad unit parameter from the ad request (i.e., slotname) to verify whether this is affecting the fill rate.

What does a good `descriptionUrl` look like?
:
    To be most effective, the content of the page that `descriptionUrl`
    points to shouldn't be a collection of words or phrases but rather
    1-3 paragraphs actually describing the content and your role in providing it.
    One method that has been successful in the past is to stitch together
    `descriptionUrl` page content dynamically from predefined blocks.
    For example, a few sentences about the content, a few sentences about your
    site's offering, and then a few predefined snippets associated with each
    AdSense channel (like "Entertainment" or "Sports"). As a result, each piece of
    content has a reasonably distinct `descriptionUrl` associated with
    it that provides both general information (such as genre descriptors) as well
    as specific information (content about the content directly).

    This metadata HTML should be simple, for example:

    ```
    <html>
      <head>
        <title>Domain.com - Your tag line here!</title>
      </head>
      <body>
        <h1>Descriptions</h1>
        <h2>About this Content</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...</p>
        <h2>About Domain.com</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...</p>
      </body>
    </html>
      
    ```

Why am I receiving the error "Ad response does not contain a valid ad type"?
:   This error generally appears because no ads have been targeted to the
    specific `publisherId` (for the given time period). This condition
    may vary throughout the day, or over several days as campaigns begin and end.
    You should check that the ad you wish to target has not expired and that the
    ad targeting criteria are correct.
    As long as ads are properly requested, received, and rendered using
    the test `publisherId`, you can be sure that these ads are
    properly handled using your live `publisherId` when the ads are
    available.

Do you have an Ad Manager video ad tag that I can use for testing?
:   Sample tags are available on the [sample tags](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/tags.md.txt) page.

Should I set the `adSlotWidth` and `adSlotHeight` to the same
values as the `sz` in my Ad Manager ad tag?
:   Not necessarily. The `adSlotWidth` and `adSlotHeight`
    must be set to the width/height of the player or area you want your ads to
    fill. They are used by AdSense to determine which ads are available to fit
    into that space. The `sz` key/value pair in your Ad Manager ad tag is
    a targeting parameter and does not necessarily affect the creative served
    (more information below).

The demo ad tag looks great, but when I switch it with my ad tag, no ad appears.
:
    Check to ensure that something is trafficked to the ad tag you are
    requesting. The easiest way to find out is to watch the HTTP traffic. If a
    **1x1 pixel grey.gif** image is returned within an HTML anchor block,
    then you need to check your targeting in Ad Manager.

I want to request ads using the same tag more than once, but I only get ads for my first
request. How do I fix this?
:
    When you request ads more than once, you need to let the ad server know
    that these are legitimate requests, and not accidental duplicates. The SDK
    does this for you with two quick API calls:

    1. Call `destroy()` on your `AdsManager` instance. This prevents any post-rolls from playing when you make the below call to `contentComplete()`. You get a new `AdsManager` when you make your next request.
    2. Call `contentComplete()` on your `AdsLoader` instance. This resets the SDK so the new ad request doesn't look like a duplicate of the previous one.


    After making the two calls above, you can call `requestAds()` on
    your `AdsLoader` instance to get another set of ads to play for your
    new video.

How do I request overlay and full slot AdSense ads using the IMA SDK?

:   To request AdSense ads using the SDK, you need to first obtain an AdSense
    ad tag. You can learn more about that on the [AdSense
    for Video page](https://support.google.com/adsense/answer/1705822). Once you have your tag, you need to take the following
    steps to make either an overlay or a full slot ad request:

    **Overlay ads**

    1. In your `AdsRequest`, set your ViewModes to `NORMAL`.
    2. In your ad tag, add the parameter `overlay=1`.

    **Full slot ads**

    1. In your `AdsRequest`, set your ViewModes to `FULLSCREEN`.
    2. In your ad tag, add the parameter `overlay=0`.

I'm getting an "Invalid clickthrough URL" error when I click on my ad. What could be the cause?
:
    The most common cause for this error is an improperly escaped clickthrough
    URL. If you're seeing this error, check to make sure that your clickthrough
    URL is properly escaped in your VAST response.

In the Android and iOS SDKs, is there a way to make the entire video ad clickable?
:   As far as whole-video click tracking goes, the standard viewer experience
    for mobile video that has emerged is that tapping on a video either
    pauses it or brings up the player controls. To avoid users
    unintentionally clicking on ads when they really just want access to the
    player controls IMA uses the **Learn more** button to let
    users click on an ad and learn more about the product being advertised.

Why do I see a "VAST Document Empty" error?
:   This error occurs when the ad tag returns an empty VAST document, indicating
    that the ad was not served properly. Talk to your account manager
    or ad server representative to see why your ad tag is not working.

Can I change the size/text of the **Skip Ad** box or other UI elements?
:   The IMA SDKs do not support changing the layout, size, or content of UI elements.
    For more details on UI elements, see `AdsManager.uiElements`.

Why am I getting "No virtual method" errors at runtime?

:   Error messages similar to the following are caused by using an older version
    of Google Play services that does not include the advertising ID.

    ```
    No virtual method
    getInfo()Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info; in
    class Lcom/google/android/gms/ads/identifier/AdvertisingIdClient; or its
    super classes (declaration of 'com.google.android.gms.ads.identifier.AdvertisingIdClient'
    ```

    Upgrading to version 4.0 or later (but preferably the latest) solves this problem.

Can I use multiple threads to initialize and manipulate the UI?
:

    No, all initialization and manipulation of the UI must be done on the
    main thread. In Android, UI objects are not thread-safe. See
    [Threads](https://developer.android.com/guide/components/processes-and-threads.html#Threads) for more information.