คำถามที่พบบ่อยเกี่ยวกับ SDK โฆษณาสื่ออินเทอร์แอกทีฟของ Google
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
- เหตุใดฉันจึงไม่ได้รับโฆษณากลับมาในทุกรูปแบบ
-
แท็กโฆษณาทดสอบได้รับการตั้งค่าให้แสดงผลโฆษณาสำหรับคำขอที่ถูกต้องเสมอ นี่คือ
เพื่ออำนวยความสะดวกในการบูรณาการ
และทำให้ทดสอบวิธีเล่นเพลเยอร์ได้ง่ายขึ้น
คำขอโฆษณาและแสดงผลโฆษณา อย่างไรก็ตาม โฆษณาในบางครั้งอาจไม่สามารถใช้งานได้ในทุก
สำหรับเว็บไซต์ บัญชี หรือหน่วยโฆษณาของคุณ หากการผสานรวมใช้งานได้
อย่างเหมาะสมกับแท็กทดสอบ แต่ไม่ใช่สำหรับแท็กของคุณเอง สาเหตุอาจเกิดจากสาเหตุใดสาเหตุหนึ่งต่อไปนี้
ดังต่อไปนี้
- คุณกำลังแสดงวิดีโอในรูปแบบที่ระบบไม่รองรับในสภาพแวดล้อมของคุณ ตัวอย่างเช่น
คุณแสดงเฉพาะโฆษณา HTML5 ใน iOS หรือ Android
- หากคุณใช้ Ad Manager รหัสผู้เผยแพร่โฆษณาของคุณอาจไม่มีโฆษณาใดๆ ที่กำหนดเป้าหมายไปยัง
ได้ในขณะนี้ นอกจากนี้ โปรดตรวจสอบว่าคุณได้อนุมัติโฆษณาที่เกี่ยวข้องและ
ครีเอทีฟโฆษณาใน Ad Manager
- หากคุณกำลังใช้ AdSense เกณฑ์การกำหนดเป้าหมายสำหรับเว็บไซต์หรือหน้าทดสอบของคุณอาจ
ไม่มีโฆษณาที่ทำงานอยู่ สาเหตุที่พบบ่อยที่สุดคือการใช้
เป็นเว็บไซต์ส่วนตัวที่ไม่มีการรวบรวมข้อมูล
- หากคุณใช้การจัดการพาร์ทเนอร์เครือข่าย Ad Exchange และ
ไม่ได้ตั้งค่า
descriptionURL
หรือไม่ได้อยู่ในรายการที่เป็นเจ้าของหรือดำเนินการ
รายการการจัดการโดเมน โฆษณาจะไม่แสดง
- ตรวจสอบเกณฑ์ minCPM ที่กำหนดไว้ใน Ad Exchange Video ต
CPM ที่ค่อนข้างสูงอาจส่งผลให้อัตราการส่งโฆษณาต่ำมาก หากต้องการแก้ไขปัญหานี้ ให้ลองทำอย่างใดอย่างหนึ่งต่อไปนี้
การนำ CPM ขั้นต่ำออกหรือนำพารามิเตอร์หน่วยโฆษณาออกจากคำขอโฆษณา
(เช่น slotname) เพื่อยืนยันว่ากิจกรรมนี้ส่งผลต่ออัตราการส่งโฆษณาหรือไม่
descriptionUrl
ที่ดีมีลักษณะอย่างไร
-
เพื่อให้มีประสิทธิภาพสูงสุด เนื้อหาของหน้าที่
descriptionUrl
ไม่ควรเป็นชุดคำหรือวลี แต่ควรเป็นชุดคำหรือวลี
1-3 ย่อหน้าที่อธิบายเนื้อหาและบทบาทของคุณในการนำเสนอเนื้อหานั้น
วิธีหนึ่งที่ประสบความสำเร็จในอดีตคือการต่อเข้าด้วยกัน
เนื้อหาของหน้าเว็บ descriptionUrl
แบบไดนามิกจากบล็อกที่กำหนดไว้ล่วงหน้า
ตัวอย่างเช่น ประโยค 2-3 ประโยคเกี่ยวกับเนื้อหา หรือ 2-3 ประโยคเกี่ยวกับ
เว็บไซต์ที่มีอยู่ รวมถึงข้อมูลโค้ดที่กำหนดไว้ล่วงหน้า 2-3 ชุดที่เชื่อมโยงกับแต่ละ
แชแนล AdSense (เช่น "บันเทิง" หรือ "กีฬา") ดังนั้น แต่ละชิ้นส่วน
เนื้อหามี descriptionUrl
ที่แตกต่างกันอย่างสมเหตุสมผลที่เกี่ยวข้องกับ
ซึ่งมีทั้งข้อมูลทั่วไป (เช่น ข้อบ่งชี้แนวเพลง)
เป็นข้อมูลที่เฉพาะเจาะจง (เนื้อหาเกี่ยวกับเนื้อหาโดยตรง)
HTML ของข้อมูลเมตานี้ควรเรียบง่าย เช่น
<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>
- เหตุใดฉันจึงได้รับข้อผิดพลาด "การตอบกลับโฆษณาไม่มีประเภทโฆษณาที่ถูกต้อง"
- ข้อผิดพลาดนี้มักเกิดขึ้นเนื่องจากไม่มีโฆษณาที่กำหนดเป้าหมายไปยัง
publisherId
(สำหรับระยะเวลาที่กำหนด) เงื่อนไขนี้
อาจแตกต่างกันไปตลอดทั้งวัน หรือในช่วงหลายวันเมื่อแคมเปญเริ่มต้นและสิ้นสุด
คุณควรตรวจสอบว่าโฆษณาที่คุณต้องการกำหนดเป้าหมายยังไม่หมดอายุ และ
เกณฑ์การกำหนดเป้าหมายโฆษณาถูกต้อง
ตราบใดที่โฆษณาได้รับการร้องขอ รับ และแสดงผลอย่างถูกต้องโดยใช้
การทดสอบ publisherId
คุณจะมั่นใจได้ว่าโฆษณาเหล่านี้
ได้รับการจัดการอย่างเหมาะสมโดยใช้ publisherId
จริงของคุณเมื่อโฆษณา
พร้อมใช้งาน
- คุณมีแท็กโฆษณาวิดีโอ Ad Manager ที่ฉันใช้ทดสอบได้ไหม
- ตัวอย่างแท็กมีอยู่ในหน้าตัวอย่างแท็ก
- ฉันควรตั้งค่า
adSlotWidth
และ adSlotHeight
ให้เหมือนกันไหม
เป็น sz
ในแท็กโฆษณา Ad Manager ของฉันไหม
- ไม่จำเป็นเสมอไป
adSlotWidth
และ adSlotHeight
ต้องตั้งค่าเป็นความกว้าง/ความสูงของโปรแกรมเล่นหรือพื้นที่ที่คุณต้องการแสดงโฆษณา
เติม AdSense จะใช้พารามิเตอร์นี้เพื่อกำหนดโฆษณาที่เหมาะสม
ก้าวไปข้างหน้า คู่คีย์/ค่า sz
ในแท็กโฆษณา Ad Manager คือ
พารามิเตอร์การกำหนดเป้าหมาย และไม่ส่งผลกระทบต่อครีเอทีฟโฆษณาที่แสดง
(ดูข้อมูลเพิ่มเติมด้านล่าง)
- แท็กโฆษณาสาธิตดูดีแล้ว แต่เมื่อฉันสลับกับแท็กโฆษณาของฉัน โฆษณากลับไม่ปรากฏ
-
ตรวจสอบให้แน่ใจว่ามีการดูแลบางอย่างในแท็กโฆษณาที่คุณ
ที่ขอ วิธีที่ง่ายที่สุดในการที่จะทราบคือการดูการเข้าชมผ่าน HTTP หากมี
รูปภาพ Gy.gif ของพิกเซล 1x1 แสดงผลภายในบล็อก Anchor ของ HTML
คุณจะต้องตรวจสอบการกำหนดเป้าหมายใน Ad Manager
- ฉันต้องการขอโฆษณาโดยใช้แท็กเดิมมากกว่า 1 ครั้ง แต่ฉันได้รับโฆษณาสำหรับแท็กแรกเท่านั้น
อีกครั้ง ฉันจะแก้ไขปัญหานี้ได้อย่างไร
-
เมื่อขอโฆษณามากกว่า 1 ครั้ง คุณต้องแจ้งให้เซิร์ฟเวอร์โฆษณาทราบ
ว่าเป็นคำขอที่ถูกต้อง มิใช่คำขอที่ซ้ำกันโดยไม่ได้ตั้งใจ SDK
จะดำเนินการดังกล่าวให้คุณด้วยการเรียก API อย่างรวดเร็ว 2 ครั้ง ได้แก่
- เรียกใช้
destroy()
ในอินสแตนซ์ AdsManager
วิธีนี้จะช่วยป้องกันไม่ให้โฆษณาตอนท้ายเล่นเมื่อคุณส่งคำขอด้านล่างไปยัง
contentComplete()
คุณได้AdsManager
ใหม่
เมื่อคุณส่งคำขอครั้งต่อไป
- โทรหา
contentComplete()
บน AdsLoader
อินสแตนซ์ การทำเช่นนี้จะรีเซ็ต SDK เพื่อไม่ให้คำขอโฆษณาใหม่มีลักษณะเหมือน
ซ้ำกับอันก่อนหน้านี้
หลังจากโทรทั้ง 2 สายข้างต้นแล้ว คุณสามารถโทรหา requestAds()
ได้ที่
อินสแตนซ์ AdsLoader
ของคุณเพื่อแสดงโฆษณาอีกชุดหนึ่งเพื่อเล่นสำหรับ
วิดีโอใหม่
- ฉันจะขอโฆษณา AdSense ซ้อนทับและโฆษณา AdSense แบบเต็มช่องโดยใช้ IMA SDK ได้อย่างไร
-
หากต้องการขอโฆษณา AdSense โดยใช้ SDK คุณจะต้องขอรับ AdSense ก่อน
แท็กโฆษณา คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ได้ใน AdSense
สำหรับหน้าวิดีโอ เมื่อมีแท็กแล้ว คุณต้องดำเนินการต่อไปนี้
ขั้นตอนในการส่งคำขอโฆษณาแบบซ้อนทับหรือเต็มช่องมีดังนี้
โฆษณาซ้อนทับ
- ใน
AdsRequest
ให้ตั้งค่า ViewModes เป็น
NORMAL
- ในแท็กโฆษณา ให้เพิ่มพารามิเตอร์
overlay=1
โฆษณาเต็มช่อง
- ใน
AdsRequest
ให้ตั้งค่า ViewModes เป็น
FULLSCREEN
- ในแท็กโฆษณา ให้เพิ่มพารามิเตอร์
overlay=0
- ฉันได้รับข้อความ "URL การคลิกผ่านไม่ถูกต้อง" เมื่อคลิกที่โฆษณา สาเหตุอาจเกิดจากอะไร
-
สาเหตุที่พบบ่อยที่สุดสำหรับข้อผิดพลาดนี้คือการคลิกผ่านที่ใช้ Escape อย่างไม่ถูกต้อง
URL หากคุณเห็นข้อผิดพลาดนี้ ให้ตรวจสอบว่าการคลิกผ่าน
การตอบสนองด้วย VAST มีการกำหนดอักขระหลีกอย่างเหมาะสมของ URL
- ใน SDK ของ Android และ iOS มีวิธีทำให้โฆษณาวิดีโอทั้งเรื่องคลิกได้หรือไม่
- สำหรับผู้ใช้การติดตามการคลิกทั้งวิดีโอ ประสบการณ์การใช้งานมาตรฐานของผู้ชม
สำหรับวิดีโอบนอุปกรณ์เคลื่อนที่ที่ปรากฏขึ้น คือการแตะบนวิดีโอ
หยุดชั่วคราวหรือเปิดตัวควบคุมวิดีโอเพลเยอร์ขึ้นมา เพื่อหลีกเลี่ยงผู้ใช้
การเผลอคลิกโฆษณาทั้งๆ ที่จริงๆ แล้วพวกเขาแค่ต้องการเข้าถึง
ตัวควบคุมวิดีโอเพลเยอร์ IMA จะใช้ปุ่มดูข้อมูลเพิ่มเติมเพื่อให้
ผู้ใช้คลิกโฆษณาและดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์ที่โฆษณา
- เหตุใดฉันจึงเห็น "เอกสาร VAST ว่างเปล่า"
- ข้อผิดพลาดนี้เกิดขึ้นเมื่อแท็กโฆษณาส่งคืนเอกสาร VAST ที่ว่างเปล่า ซึ่งบ่งบอกว่า
โฆษณานั้นแสดงไม่ถูกต้อง โปรดติดต่อผู้จัดการฝ่ายดูแลลูกค้า
หรือผู้ให้บริการเซิร์ฟเวอร์โฆษณาเพื่อดูสาเหตุที่แท็กโฆษณาไม่ทำงาน
- ฉันสามารถเปลี่ยนขนาด/ข้อความของช่องข้ามโฆษณา หรือองค์ประกอบ UI อื่นๆ ได้ไหม
- IMA SDK ไม่รองรับการเปลี่ยนเลย์เอาต์ ขนาด หรือเนื้อหาขององค์ประกอบ UI
ดูรายละเอียดเพิ่มเติมเกี่ยวกับองค์ประกอบ UI ได้ที่
AdsManager.uiElements
- เหตุใดฉันจึงได้รับข้อความ "ไม่มีวิธีการเสมือน" ที่เกิดข้อผิดพลาดขณะรันไทม์
-
ข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้เกิดจากการใช้เวอร์ชันเก่า
ของบริการ Google Play ที่ไม่มีรหัสโฆษณา
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'
การอัปเกรดเป็นเวอร์ชัน 4.0 หรือใหม่กว่า (แต่ควรเป็นเวอร์ชันล่าสุด) สามารถแก้ปัญหานี้ได้
- ฉันใช้ชุดข้อความหลายรายการเพื่อเริ่มต้นและจัดการ UI ได้ไหม
-
ไม่ได้ การเริ่มต้นและการจัดการ UI ทั้งหมดต้องทำใน
เทรดหลัก ใน Android ออบเจ็กต์ UI ไม่ปลอดภัยต่อชุดข้อความ โปรดดู
โปรดดูข้อมูลเพิ่มเติมที่หัวข้อ
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-08-31 UTC
[null,null,["อัปเดตล่าสุด 2025-08-31 UTC"],[[["\u003cp\u003eThe test ad tags always return ads for valid requests to help with integration and testing; however, live ads might not always be available due to factors like ad targeting, formats, and publisher settings.\u003c/p\u003e\n"],["\u003cp\u003eWhen using your own ad tag, ensure it's properly trafficked and targeted in Ad Manager to avoid issues like no ads appearing or a 1x1 pixel grey.gif being returned.\u003c/p\u003e\n"],["\u003cp\u003eFor repeated ad requests using the same tag, use \u003ccode\u003edestroy()\u003c/code\u003e on the \u003ccode\u003eAdsManager\u003c/code\u003e and \u003ccode\u003econtentComplete()\u003c/code\u003e on the \u003ccode\u003eAdsLoader\u003c/code\u003e to prevent duplicate requests and ensure proper ad serving.\u003c/p\u003e\n"],["\u003cp\u003eAn "Ad response does not contain a valid ad type" error usually indicates an issue with ad targeting for your publisher ID; verify the ad's status and targeting criteria in Ad Manager.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eadSlotWidth\u003c/code\u003e and \u003ccode\u003eadSlotHeight\u003c/code\u003e should be set to the player's dimensions for ad fitting, while the \u003ccode\u003esz\u003c/code\u003e parameter in the Ad Manager tag is for targeting and may not directly influence creative selection.\u003c/p\u003e\n"]]],[],null,["# Google Interactive Media Ads SDK FAQs\n\n- [Why am I not getting ads back for all formats?](#1)\n- [What does a good descriptionUrl look like?](#2)\n- [Why am I receiving the error \"Ad response does not contain a valid ad type\"?](#3)\n- [Do you have an Ad Manager video ad tag that I can use for testing?](#4)\n- [Should I set the adSlotWidth and adSlotHeight to the same values\n as the sz in my Ad Manager ad tag?](#5)\n- [The demo ad tag looks great, but when I switch it with my ad tag,\n no ad appears.](#7)\n- [I want to request ads using the same tag more than once, but I\n only get ads for my first request. How do I fix this?](#8)\n- [How do I request overlay and full slot AdSense ads using the IMA\n SDK?](#9)\n- [I'm getting an \"Invalid clickthrough URL\" error when I click on my\n ad. What could be the cause?](#10)\n- [In the Android and iOS SDKs, is there a way to make the entire video\n ad clickable?](#11)\n- [Why do I see a \"VAST Document Empty\" error?](#12)\n- [Can I change the size/text of the \"Skip Ad\" box or other UI elements?](#13)\n- [Why am I getting \"No virtual method\" errors at runtime?](#14)\n- [Can I use multiple threads to initialize and manipulate the UI?](#18)\n\n*** ** * ** ***\n\nWhy am I not getting ads back for all formats?\n:\n The test ad tags are set up to always return ads for valid requests. This is\n meant to facilitate integration and make it easier to test how your player\n requests and renders ads. However, ads are not always available in every\n format for your site, account, or ad unit. If your integration is working\n properly for the test tag but not for your own tag, the cause may be one of\n the following:\n\n - You're serving videos of an unsupported format to your environment. For example, you're serving only HTML5 ads to iOS or Android.\n - 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.\n - 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.\n - 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.\n - 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.\n\nWhat does a good `descriptionUrl` look like?\n:\n To be most effective, the content of the page that `descriptionUrl`\n points to shouldn't be a collection of words or phrases but rather\n 1-3 paragraphs actually describing the content and your role in providing it.\n One method that has been successful in the past is to stitch together\n `descriptionUrl` page content dynamically from predefined blocks.\n For example, a few sentences about the content, a few sentences about your\n site's offering, and then a few predefined snippets associated with each\n AdSense channel (like \"Entertainment\" or \"Sports\"). As a result, each piece of\n content has a reasonably distinct `descriptionUrl` associated with\n it that provides both general information (such as genre descriptors) as well\n as specific information (content about the content directly).\n\n This metadata HTML should be simple, for example:\n\n ```text\n \u003chtml\u003e\n \u003chead\u003e\n \u003ctitle\u003eDomain.com - Your tag line here!\u003c/title\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003ch1\u003eDescriptions\u003c/h1\u003e\n \u003ch2\u003eAbout this Content\u003c/h2\u003e\n \u003cp\u003eLorem ipsum dolor sit amet, consectetur adipiscing elit. ...\u003c/p\u003e\n \u003ch2\u003eAbout Domain.com\u003c/h2\u003e\n \u003cp\u003eLorem ipsum dolor sit amet, consectetur adipiscing elit. ...\u003c/p\u003e\n \u003c/body\u003e\n \u003c/html\u003e\n \n ```\n\nWhy am I receiving the error \"Ad response does not contain a valid ad type\"?\n: This error generally appears because no ads have been targeted to the\n specific `publisherId` (for the given time period). This condition\n may vary throughout the day, or over several days as campaigns begin and end.\n You should check that the ad you wish to target has not expired and that the\n ad targeting criteria are correct.\n As long as ads are properly requested, received, and rendered using\n the test `publisherId`, you can be sure that these ads are\n properly handled using your live `publisherId` when the ads are\n available.\n\nDo you have an Ad Manager video ad tag that I can use for testing?\n: Sample tags are available on the [sample tags](/interactive-media-ads/docs/sdks/android/client-side/tags) page.\n\nShould I set the `adSlotWidth` and `adSlotHeight` to the same\nvalues as the `sz` in my Ad Manager ad tag?\n: Not necessarily. The `adSlotWidth` and `adSlotHeight`\n must be set to the width/height of the player or area you want your ads to\n fill. They are used by AdSense to determine which ads are available to fit\n into that space. The `sz` key/value pair in your Ad Manager ad tag is\n a targeting parameter and does not necessarily affect the creative served\n (more information below).\n\nThe demo ad tag looks great, but when I switch it with my ad tag, no ad appears.\n:\n Check to ensure that something is trafficked to the ad tag you are\n requesting. The easiest way to find out is to watch the HTTP traffic. If a\n **1x1 pixel grey.gif** image is returned within an HTML anchor block,\n then you need to check your targeting in Ad Manager.\n\nI want to request ads using the same tag more than once, but I only get ads for my first\nrequest. How do I fix this?\n:\n When you request ads more than once, you need to let the ad server know\n that these are legitimate requests, and not accidental duplicates. The SDK\n does this for you with two quick API calls:\n\n 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.\n 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.\n\n\n After making the two calls above, you can call `requestAds()` on\n your `AdsLoader` instance to get another set of ads to play for your\n new video.\n\nHow do I request overlay and full slot AdSense ads using the IMA SDK?\n\n: To request AdSense ads using the SDK, you need to first obtain an AdSense\n ad tag. You can learn more about that on the [AdSense\n for Video page](//support.google.com/adsense/answer/1705822). Once you have your tag, you need to take the following\n steps to make either an overlay or a full slot ad request:\n\n **Overlay ads**\n\n 1. In your `AdsRequest`, set your ViewModes to `NORMAL`.\n 2. In your ad tag, add the parameter `overlay=1`.\n\n **Full slot ads**\n\n 1. In your `AdsRequest`, set your ViewModes to `FULLSCREEN`.\n 2. In your ad tag, add the parameter `overlay=0`.\n\nI'm getting an \"Invalid clickthrough URL\" error when I click on my ad. What could be the cause?\n:\n The most common cause for this error is an improperly escaped clickthrough\n URL. If you're seeing this error, check to make sure that your clickthrough\n URL is properly escaped in your VAST response.\n\nIn the Android and iOS SDKs, is there a way to make the entire video ad clickable?\n: As far as whole-video click tracking goes, the standard viewer experience\n for mobile video that has emerged is that tapping on a video either\n pauses it or brings up the player controls. To avoid users\n unintentionally clicking on ads when they really just want access to the\n player controls IMA uses the **Learn more** button to let\n users click on an ad and learn more about the product being advertised.\n\nWhy do I see a \"VAST Document Empty\" error?\n: This error occurs when the ad tag returns an empty VAST document, indicating\n that the ad was not served properly. Talk to your account manager\n or ad server representative to see why your ad tag is not working.\n\nCan I change the size/text of the **Skip Ad** box or other UI elements?\n: The IMA SDKs do not support changing the layout, size, or content of UI elements.\n For more details on UI elements, see `AdsManager.uiElements`.\n\nWhy am I getting \"No virtual method\" errors at runtime?\n\n: Error messages similar to the following are caused by using an older version\n of Google Play services that does not include the advertising ID.\n\n ```\n No virtual method\n getInfo()Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info; in\n class Lcom/google/android/gms/ads/identifier/AdvertisingIdClient; or its\n super classes (declaration of 'com.google.android.gms.ads.identifier.AdvertisingIdClient'\n ```\n\n Upgrading to version 4.0 or later (but preferably the latest) solves this problem.\n\nCan I use multiple threads to initialize and manipulate the UI?\n:\n\n No, all initialization and manipulation of the UI must be done on the\n main thread. In Android, UI objects are not thread-safe. See\n [Threads](//developer.android.com/guide/components/processes-and-threads.html#Threads) for more information."]]