Quảng cáo xen kẽ

Quảng cáo xen kẽ là quảng cáo toàn màn hình che phủ giao diện của ứng dụng lưu trữ. Quảng cáo này thường được hiển thị ở các điểm chuyển tiếp tự nhiên trong quy trình hoạt động của ứng dụng, chẳng hạn như giữa các hoạt động hoặc trong thời gian tạm dừng giữa các cấp độ của trò chơi. Khi một ứng dụng hiển thị quảng cáo xen kẽ, người dùng sẽ có thể chọn nhấn vào quảng cáo và tiếp tục chuyển đến trang đích của quảng cáo đó hoặc đóng quảng cáo và quay trở lại ứng dụng. Nghiên cứu điển hình.

Tài liệu hướng dẫn này giải thích cách tích hợp quảng cáo xen kẽ vào một ứng dụng Android

Điều kiện tiên quyết

Tạo đối tượng quảng cáo xen kẽ

Quảng cáo xen kẽ do các đối tượng InterstitialAd yêu cầu và hiển thị. Bước đầu tiên là khởi tạo InterstitialAd và đặt mã đơn vị quảng cáo. Bạn có thể thực hiện việc này trong phương thức onCreate() của một Hoạt động:

Java

    package ...

    import com.google.android.gms.ads.InterstitialAd;

    public class MainActivity extends Activity {

        private InterstitialAd mInterstitialAd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                MobileAds.initialize(this, new OnInitializationCompleteListener() {
                @Override
                public void onInitializationComplete(InitializationStatus initializationStatus) {}
            });
                mInterstitialAd = new InterstitialAd(this);
            mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        }
    }

Kotlin

    class MainActivity : Activity() {

        private lateinit var mInterstitialAd: InterstitialAd

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
                MobileAds.initialize(this) {}
                mInterstitialAd = InterstitialAd(this)
            mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
        }
    }

Hệ thống có thể dùng một đối tượng InterstitialAd để yêu cầu và hiển thị nhiều quảng cáo xen kẽ trong suốt thời gian diễn ra một hoạt động. Vì vậy, bạn chỉ cần tạo đối tượng một lần duy nhất.

Luôn kiểm tra bằng quảng cáo thử nghiệm

Khi tạo và thử nghiệm ứng dụng, hãy đảm bảo rằng bạn sử dụng quảng cáo thử nghiệm thay vì quảng cáo đang chạy thực tế. Chúng tôi sẽ tạm ngưng tài khoản của bạn nếu bạn không thực hiện việc này.

Cách dễ nhất để tải quảng cáo thử nghiệm là sử dụng mã đơn vị quảng cáo thử nghiệm dành cho quảng cáo xen kẽ Android:

ca-app-pub-3940256099942544/1033173712

Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm cho mọi yêu cầu và bạn có thể sử dụng mã này trong ứng dụng của mình khi viết mã, thử nghiệm và gỡ lỗi. Bạn chỉ cần thay thế mã này bằng mã đơn vị quảng cáo của mình trước khi xuất bản ứng dụng.

Để biết thêm thông tin về cách hoạt động của quảng cáo thử nghiệm của SDK quảng cáo trên thiết bị di động, hãy tham khảo bài viết về Quảng cáo thử nghiệm.

Tải quảng cáo

Để tải quảng cáo xen kẽ, hãy gọi phương thức loadAd() của đối tượng InterstitialAd. Phương thức này chấp nhận một đối tượng AdRequest làm thông số duy nhất của phương thức:

Java

    package ...

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

    public class MainActivity extends Activity {

        private InterstitialAd mInterstitialAd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                MobileAds.initialize(this,
                "ca-app-pub-3940256099942544~3347511713");
                mInterstitialAd = new InterstitialAd(this);
            mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }
    }

Kotlin

    class MainActivity : Activity() {

        private lateinit var mInterstitialAd: InterstitialAd

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
                MobileAds.initialize(this,
                "ca-app-pub-3940256099942544~3347511713")
                mInterstitialAd = InterstitialAd(this)
            mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
            mInterstitialAd.loadAd(AdRequest.Builder().build())
        }
    }

Hiển thị quảng cáo

Quảng cáo xen kẽ nên hiển thị trong thời gian tạm dừng tự nhiên trong quy trình hoạt động của ứng dụng. Bạn nên thiết lập để quảng cáo xuất hiện xen kẽ giữa các cấp độ của trò chơi hoặc sau khi người dùng hoàn thành một nhiệm vụ. Để hiển thị quảng cáo xen kẽ, hãy sử dụng phương thức isLoaded() để xác minh rằng quảng cáo đã tải xong, sau đó gọi show(). Quảng cáo xen kẽ trong ví dụ về mã ở trên có thể hiển thị trong OnClickListener của nút như sau:

Java

    mMyButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
            } else {
                Log.d("TAG", "The interstitial wasn't loaded yet.");
            }
        }
    });

Kotlin

    mMyButton.setOnClickListener {
        if (mInterstitialAd.isLoaded) {
            mInterstitialAd.show()
        } else {
            Log.d("TAG", "The interstitial wasn't loaded yet.")
        }
    }
    

Sự kiện quảng cáo

Để tùy chỉnh thêm hành vi của quảng cáo, bạn có thể dựa vào một số sự kiện trong thời gian hoạt động của quảng cáo: tải, mở, đóng và các sự kiện khác. Bạn có thể theo dõi các sự kiện này thông qua lớp AdListener .

Để sử dụng AdListener với đối tượng InterstitialAd , bạn chỉ cần gọi phương thức setAdListener() :

Java

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

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

        @Override
        public void onAdOpened() {
            // Code to be executed when the ad is displayed.
        }

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

        @Override
        public void onAdLeftApplication() {
            // Code to be executed when the user has left the app.
        }

        @Override
        public void onAdClosed() {
            // Code to be executed when the interstitial ad is closed.
        }
    });

Kotlin

    mInterstitialAd.adListener = object: AdListener() {
        override fun onAdLoaded() {
            // Code to be executed when an ad finishes loading.
        }

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

        override fun onAdOpened() {
            // Code to be executed when the ad is displayed.
        }

        override fun onAdClicked() {
            // Code to be executed when the user clicks on an ad.
        }

        override fun onAdLeftApplication() {
            // Code to be executed when the user has left the app.
        }

        override fun onAdClosed() {
            // Code to be executed when the interstitial ad is closed.
        }
    }
    

Mỗi phương thức có thể ghi đè trong AdListener đều tương ứng với một sự kiện trong thời gian hoạt động của một quảng cáo.

Các phương thức có thể ghi đè
onAdLoaded() Hệ thống sẽ thực thi phương thức onAdLoaded() sau khi quảng cáo đã tải xong.
onAdFailedToLoad() Phương thức onAdFailedToLoad() bao gồm thông số errorCode cho biết loại lỗi đã xảy ra. Các giá trị có thể có được định nghĩa dưới dạng hằng số trong lớp AdRequest :
  • ERROR_CODE_INTERNAL_ERROR – Đã xảy ra lỗi nội bộ; ví dụ: máy chủ quảng cáo đã gửi thông tin phản hồi không hợp lệ.
  • ERROR_CODE_INVALID_REQUEST – Yêu cầu quảng cáo không hợp lệ; ví dụ: mã đơn vị quảng cáo không chính xác.
  • ERROR_CODE_NETWORK_ERROR – Yêu cầu quảng cáo được thực hiện không thành công do không có kết nối mạng.
  • ERROR_CODE_NO_FILL – Yêu cầu quảng cáo được thực hiện thành công, nhưng hệ thống không trả về quảng cáo do thiếu khoảng không quảng cáo.
onAdOpened() Phương thức này được gọi khi quảng cáo hiển thị, bao phủ màn hình của thiết bị.
onAdLeftApplication() Phương thức này được gọi khi một lượt nhấp của người dùng mở ra một ứng dụng khác (chẳng hạn như Google Play), chuyển ứng dụng hiện tại sang chạy ở chế độ nền.
onAdClosed() Phương thức này được gọi khi người dùng nhấn vào biểu tượng đóng hoặc sử dụng nút quay lại để đóng quảng cáo xen kẽ. Nếu ứng dụng của bạn tạm dừng phát âm thanh hoặc vòng lặp trò chơi, thì đây là thời điểm thích hợp để tiếp tục.

Sử dụng AdListener để tải lại

Phương thức AdListener của lớp onAdClosed() là phương thức phù hợp để tải quảng cáo xen kẽ mới sau khi hiển thị quảng cáo xen kẽ trước đó:

Java

    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                MobileAds.initialize(this,
                "ca-app-pub-3940256099942544~3347511713");
            mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());

        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                // Load the next interstitial.
                mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }

        });
    }
    ...
    

Kotlin

    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
                MobileAds.initialize(this,
                "ca-app-pub-3940256099942544~3347511713")
            mInterstitialAd = InterstitialAd(this)
        mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
        mInterstitialAd.adListener = object : AdListener() {
            override fun onAdClosed() {
                mInterstitialAd.loadAd(AdRequest.Builder().build())
            }
        }
    }
    ...
    

Một số phương pháp hay nhất

Cân nhắc xem quảng cáo xen kẽ có phải là loại quảng cáo thích hợp cho ứng dụng của bạn hay không.
Quảng cáo xen kẽ hoạt động hiệu quả nhất trong các ứng dụng có các điểm chuyển tiếp tự nhiên. Hãy tạo ra một điểm chuyển tiếp khi kết thúc một hành động trong ứng dụng, chẳng hạn như chia sẻ hình ảnh hoặc hoàn tất một cấp độ trò chơi. Bởi vì người dùng mong đợi một khoảng nghỉ tạm thời, nên bạn dễ dàng hiển thị quảng cáo xen kẽ mà không làm gián đoạn trải nghiệm của họ. Hãy đảm bảo cân nhắc thời điểm bạn muốn hiển thị quảng cáo xen kẽ trong quy trình hoạt động của ứng dụng và khả năng phản hồi của người dùng.
Hãy nhớ tạm dừng hành động khi hiển thị quảng cáo xen kẽ.
Có nhiều loại quảng cáo xen kẽ khác nhau như: văn bản, hình ảnh, video và các loại khác. Bạn phải đảm bảo rằng khi ứng dụng của bạn hiển thị quảng cáo xen kẽ, ứng dụng đó cũng sẽ tạm ngừng sử dụng một số tài nguyên để cho phép quảng cáo tận dụng các tài nguyên đó. Ví dụ: khi bạn thực hiện lệnh gọi để hiển thị quảng cáo xen kẽ, hãy chắc chắn bạn đã tạm dừng phát mọi âm thanh trên ứng dụng của mình. Bạn có thể tiếp tục phát âm thanh trong trình xử lý sự kiện onAdClosed(). Trình xử lý này sẽ được gọi khi người dùng kết thúc việc tương tác với quảng cáo. Ngoài ra, bạn hãy cân nhắc tạm dừng mọi thao tác tính toán cường độ cao (chẳng hạn như vòng lặp trò chơi) trong khi hiển thị quảng cáo. Việc này sẽ đảm bảo người dùng không thấy hiện tượng hình ảnh chậm hiển thị hoặc không phản hồi hay video bị giật.
Cho phép đủ thời gian tải.
Bạn phải đảm bảo rằng quảng cáo xen kẽ hiển thị tại thời điểm phù hợp, đồng thời người dùng không phải đợi quảng cáo tải. Việc tải quảng cáo trước bằng cách gọi loadAd() trước khi bạn dự định gọi show() có thể đảm bảo rằng ứng dụng của bạn có quảng cáo xen kẽ đã tải đầy đủ và sẵn sàng hiển thị tại thời điểm thích hợp.
Đừng hiển thị quá nhiều quảng cáo cho người dùng.
Mặc dù việc tăng tần suất hiển thị quảng cáo xen kẽ trong ứng dụng có thể là một cách hay để tăng doanh thu, nhưng việc đó cũng có thể làm suy giảm trải nghiệm người dùng và làm giảm tỷ lệ nhấp. Hãy đảm bảo rằng người dùng không bị gián đoạn thường xuyên vì điều đó sẽ khiến cho họ không còn hứng thú khi sử dụng ứng dụng của bạn.

Mã nguồn

Các tài nguyên khác

Các mẫu trên GitHub

  • Ứng dụng mẫu quảng cáo xen kẽ: Java | Kotlin

Video hướng dẫn về Trung tâm quảng cáo trên thiết bị di động

Câu chuyện thành công

Các bước tiếp theo