แบนเนอร์โฆษณา

โฆษณาแบนเนอร์ใช้พื้นที่ภายในเลย์เอาต์ของแอป ทั้งทางด้านบนและด้านล่างของหน้าจออุปกรณ์ ในระหว่างที่ผู้ใช้กําลังโต้ตอบกับแอป และรีเฟรชหน้าจอโดยอัตโนมัติเมื่อผ่านไประยะหนึ่ง หากคุณยังใหม่ต่อการโฆษณา บนอุปกรณ์เคลื่อนที่ เป็นจุดเริ่มต้นที่ดี กรณีศึกษา

คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาแบนเนอร์จาก AdMob เข้ากับแอป Android นอกเหนือจากตัวอย่างโค้ดและคําแนะนําแล้ว ยังมีข้อมูลเกี่ยวกับการปรับขนาดแบนเนอร์ให้เหมาะสมและลิงก์ไปยังทรัพยากรเพิ่มเติมอีกด้วย

สิ่งที่ต้องดำเนินการก่อน

เพิ่ม AdView ในเลย์เอาต์

ขั้นตอนแรกในการแสดงแบนเนอร์คือการวาง AdView ในเลย์เอาต์สําหรับ Activity หรือ Fragment ที่ต้องการแสดง วิธีที่ง่ายที่สุดในการเพิ่ม URL คือ ในไฟล์รูปแบบ XML ที่เกี่ยวข้อง ต่อไปนี้คือตัวอย่างที่แสดงAdViewของกิจกรรม

# main_activity.xml
<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

โปรดทราบแอตทริบิวต์ที่จําเป็นต่อไปนี้

  • ads:adSize: ตั้งค่านี้เป็นขนาดโฆษณาที่คุณต้องการใช้ หากคุณไม่ต้องการใช้ขนาดมาตรฐานที่กําหนดโดยค่าคงที่ คุณสามารถตั้งค่าขนาดที่กําหนดเองได้ ดูรายละเอียดได้ที่ส่วนขนาดแบนเนอร์

  • ads:adUnitId: ตั้งค่าตัวระบุที่ไม่ซ้ํากันให้กับหน่วยโฆษณาในแอปที่จะแสดงโฆษณา หากคุณแสดงโฆษณาแบนเนอร์ในกิจกรรมที่แตกต่างกัน ผู้ใช้แต่ละคนจะต้องใช้ หน่วยโฆษณาเป็นหน่วยโฆษณา

คุณสามารถสร้าง AdView แบบเป็นโปรแกรม

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

ทดสอบด้วยโฆษณาทดสอบเสมอ

เมื่อสร้างและทดสอบแอป อย่าลืมใช้โฆษณาทดสอบแทนที่จะใช้โฆษณาจริง หากคุณไม่ทําเช่นนั้น เราอาจระงับบัญชีของคุณ

วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบโดยเฉพาะสําหรับแบนเนอร์ Android:

ca-app-pub-3940256099942544/6300978111

เนื่องจากมีการกําหนดค่าเป็นพิเศษให้ส่งโฆษณาทดสอบสําหรับทุกคําขอ และคุณจะใช้ในแอปของคุณเองได้ในขณะที่เขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงแทนที่ด้วย รหัสหน่วยโฆษณาของคุณเองก่อนที่จะเผยแพร่แอป

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทํางานของโฆษณาทดสอบของ SDK โฆษณาในอุปกรณ์เคลื่อนที่ โปรดดูโฆษณาทดสอบ

โหลดโฆษณา

เมื่อ AdView พร้อมใช้งานแล้ว ขั้นตอนถัดไปคือการโหลดโฆษณา ซึ่งทําได้โดยใช้เมธอด loadAd() ในคลาส AdView โดยจะใช้พารามิเตอร์ AdRequest ซึ่งเก็บข้อมูลรันไทม์ เช่น ข้อมูลการกําหนดเป้าหมาย เกี่ยวกับคําขอโฆษณารายการเดียว

นี่คือตัวอย่างที่แสดงวิธีโหลดโฆษณาในเมธอด onCreate() ของ Activity

กิจกรรมหลัก (ข้อความที่ตัดตอนมา)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

หากโฆษณาของคุณโหลดไม่ได้ คุณไม่จําเป็นต้องขอหน่วยโฆษณาใหม่อย่างชัดแจ้ง ตราบใดที่คุณกําหนดค่าหน่วยโฆษณาให้รีเฟรช SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google จะยึดตามอัตราการรีเฟรชที่คุณระบุไว้ในAdMob อินเทอร์เฟซเว็บ หากคุณไม่ได้เปิดใช้การรีเฟรช คุณจะต้องส่งคําขอใหม่

เท่านี้ก็เรียบร้อย ตอนนี้แอปของคุณก็พร้อมแสดงโฆษณาแบนเนอร์แล้ว

เหตุการณ์โฆษณา

หากต้องการปรับแต่งลักษณะการทํางานของโฆษณาเพิ่มเติม คุณอาจใส่ เหตุการณ์ต่างๆ ในวงจรโฆษณา เช่น การโหลด การเปิด การปิด และอื่นๆ คุณจะฟังเหตุการณ์เหล่านี้ผ่านคลาส AdListener ได้

หากต้องการใช้ AdListener กับ AdView ให้เรียกใช้เมธอด setAdListener() ดังนี้

Java

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

mAdView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

เมธอดที่ลบล้างได้ทั้งหมดใน AdListener สอดคล้องกับเหตุการณ์ในวงจรของโฆษณา

เมธอดที่ลบล้างได้
onAdClicked() ระบบจะเรียกใช้เมธอด onAdClicked() เมื่อมีการบันทึกการคลิกสําหรับโฆษณา 1 รายการ
onAdClosed() ระบบจะเรียกใช้เมธอด onAdClosed() เมื่อผู้ใช้กลับไปที่แอปหลังจากดู URL ปลายทางของโฆษณา แอปสามารถใช้กิจกรรมที่ถูกระงับต่อหรือทํางานอื่นๆ ที่จําเป็นเพื่อให้พร้อมสําหรับการโต้ตอบ ดูตัวอย่าง Listener ของ AdMob สําหรับการใช้เมธอด Listener โฆษณาในแอป สาธิต Android API
onAdFailedToLoad() วิธี onAdFailedToLoad() เป็นวิธีเดียวที่มีพารามิเตอร์ พารามิเตอร์ข้อผิดพลาดประเภท LoadAdError จะอธิบายสิ่งที่เกิดขึ้น ดูข้อมูลเพิ่มเติมได้ที่การแก้ไขข้อบกพร่องเกี่ยวกับข้อผิดพลาดในการโหลดโฆษณา
onAdImpression() ระบบจะเรียกใช้เมธอด onAdImpression() เมื่อมีการบันทึกการแสดงผลสําหรับโฆษณา
onAdLoaded() ระบบจะเรียกใช้เมธอด onAdLoaded() เมื่อโฆษณาโหลดเสร็จแล้ว หากต้องการหน่วงเวลาการเพิ่ม AdView ลงในกิจกรรมหรือส่วนย่อยจนกว่าคุณจะมั่นใจว่าระบบจะโหลดโฆษณา ที่นี่
onAdOpened() ระบบจะเรียกใช้เมธอด onAdOpened() เมื่อโฆษณาเปิดโฆษณาซ้อนทับที่บังหน้าจอ

คอนเทนเนอร์ต้องวางโฆษณาของคุณตามขนาดอย่างน้อยเท่ากับแบนเนอร์ หากคอนเทนเนอร์มีระยะห่างจากขอบ จะทําให้ขนาดของคอนเทนเนอร์ มีประสิทธิภาพลดลง ในกรณีที่คอนเทนเนอร์ไม่สามารถปรับขนาดโฆษณาแบนเนอร์ได้ แบนเนอร์จะไม่ปรากฏขึ้นและคุณจะได้รับคําเตือนนี้ในบันทึก

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

ตารางด้านล่างแสดงขนาดแบนเนอร์มาตรฐาน

ขนาดในหน่วย dp (กว้างxสูง) คำอธิบาย ความพร้อมใช้งาน ค่าคงที่ของ AdSize
320x50 แบนเนอร์ โทรศัพท์และแท็บเล็ต BANNER
320x100 แบนเนอร์ขนาดใหญ่ โทรศัพท์และแท็บเล็ต LARGE_BANNER
300x250 สี่เหลี่ยมผืนผ้ากลาง IAB โทรศัพท์และแท็บเล็ต MEDIUM_RECTANGLE
468x60 แบนเนอร์ขนาดเต็ม IAB แท็บเล็ต FULL_BANNER
728x90 ลีดเดอร์บอร์ด IAB แท็บเล็ต LEADERBOARD
ความกว้างที่ระบุ x ความสูงที่ปรับได้ แบนเนอร์แบบปรับขนาดได้ โทรศัพท์และแท็บเล็ต ไม่มีข้อมูล
ความกว้างหน้าจอ x 32|50|90 แบนเนอร์อัจฉริยะ โทรศัพท์และแท็บเล็ต SMART_BANNER

หากต้องการกําหนดขนาดแบนเนอร์ที่กําหนดเอง ให้ตั้งค่า AdSize ที่ต้องการดังนี้

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

การเร่งฮาร์ดแวร์สําหรับโฆษณาวิดีโอ

หากต้องการให้โฆษณาวิดีโอแสดงได้สําเร็จในมุมมองโฆษณาแบนเนอร์ คุณจะต้องเปิดใช้การเร่งฮาร์ดแวร์

การเร่งฮาร์ดแวร์จะเปิดใช้โดยค่าเริ่มต้น แต่บางแอปอาจเลือกปิดใช้งาน หากแอปของคุณใช้ได้กับแอปของคุณ เราขอแนะนําให้เปิดใช้การเร่งฮาร์ดแวร์สําหรับคลาส Activity ที่ใช้โฆษณา

เปิดใช้งานการเร่งฮาร์ดแวร์

หากแอปของคุณทํางานไม่ถูกต้องโดยเปิดการเร่งฮาร์ดแวร์ทั่วโลก คุณจะควบคุมแอปสําหรับแต่ละกิจกรรมได้เช่นกัน หากต้องการเปิดหรือปิดใช้ การเร่งฮาร์ดแวร์ ให้ใช้แอตทริบิวต์ android:hardwareAccelerated สําหรับองค์ประกอบ <application> และ <activity> ใน AndroidManifest.xml ตัวอย่างต่อไปนี้เปิดใช้การเร่งฮาร์ดแวร์สําหรับทั้งแอป แต่ปิดใช้หนึ่งกิจกรรม

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการควบคุมการเร่งฮาร์ดแวร์ได้ในคู่มือการเร่งฮาร์ดแวร์ โปรดทราบว่าการดูโฆษณาแต่ละครั้งไม่สามารถเปิดใช้การเร่งฮาร์ดแวร์ได้ถ้ากิจกรรมถูกปิดใช้งาน ดังนั้นกิจกรรมจะต้องเปิดใช้การเร่งฮาร์ดแวร์ด้วย

แหล่งข้อมูลเพิ่มเติม

ตัวอย่างใน GitHub

  • ตัวอย่างโฆษณาแบนเนอร์ Java | Kotlin

  • การสาธิตฟีเจอร์ขั้นสูง: Java | Kotlin

  • ตัวอย่างแบนเนอร์ RecyclerView: Java

วิดีโอแนะนําเกี่ยวกับวิดีโอ Garage Mobile

เรื่องราวความสำเร็จ

ขั้นตอนถัดไป

สํารวจหัวข้อต่อไปนี้