Search…

Tích Hợp Quảng Cáo Admob vào Ứng Dụng Android

16/11/20205 min read
AdMob là nền tảng quảng cáo trên thiết bị di động cung cấp dịch vụ cho các nhà quảng cáo, nhà xuất bản, đại lý và nhà phát triển ứng dụng.

Các loại quảng cáo AdMob

AdMob hỗ trợ trong Android dưới 2 dạng đó là:

  • Banner ads: hiển thị 1 phần ở trên hoặc dưới màn hình.
  • Interstitial ads: dạng quảng cáo toàn màn hình.
Admob Banner Ads
Banner Ads
AdMob Interstitial Ads
Interstitial Ads

Ad Units

Ứng với mỗi loại quảng cáo Banner hay Interstitial sẽ có 1 đơn vị quảng cáo gọi là Ad unit, mỗi Ad unit sẽ có 1 id định danh. Để tích hợp quảng cáo vào ứng dụng phải tạo đơn vị quảng cáo trên trang chủ AdMob.

Tạo Banner Ad unit

Bước 1: tạo 1 tài khoản AdMob nếu chưa có tại: https://apps.admob.com

Bước 2: chọn sang tab Monetize và nhấn vào Monetize new app

Bước 3: nhập tên App và chọn nền tảng tích hợp quảng cáo nền tảng (ở đây chọn Android) và nhấn Add app.

Bước 4: chọn loại quảng cáo và nhập tên quảng cáo, tên này dùng để quản lý sau khi gắn quảng cáo để xem số lượt xem, số lượt nhấp chuột và nhấn Save.

Bước 5: đăng kí thành công sẽ thấy 1 chuỗi dài như dưới đây, đó là id của Ad unit dùng để tích hợp vào ứng dụng.

Tạo Interstitial Ad unit

Tạo tiếp 1 loại quảng cáo là Interstitial ads:

Tiếp theo, tiến hành tích hợp quảng cáo vào ứng dụng Android sau khi đã tạo thành công các Ad units.

Tích hợp AdMob vào ứng dụng Android

Tạo 1 project có tên là AdModAds:

Tiếp theo, mở file build-gradle (Module: app) và thêm dòng dưới đây vào trong dependencies:

compile 'com.google.android.gms:play-services-ads:9.0.0'

Nhấn Sync Now để Android Studio tải thư viện và tiến hành cài đặt:

Tạo thêm 1 Activity, tên là FullAdsActivity để hiển thị quảng cáo dạng toàn màn hình Interstitial.

MainActivity hiển thị quảng cáo dạng Banner ở phía dưới và 1 button để mở FullAdsActivity .

Vì việc tải quảng cáo cần sử dụng internet nên phải cấp quyền truy cập internet trong file manifest.xml như sau:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nguyennghia.admobads">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".FullAdsActivity"></activity>
    </application>
</manifest>

Thêm Ad unit vừa mới tạo ở trên vào thư mục string.xml trong values:

<resources>
    <string name="app_name">AdMobAds</string>
    <!--Ad unit-->
    <string name="ad_unit_banner">ca-app-pub-8567317612161629/1489835995</string>
    <string name="ad_unit_full">ca-app-pub-8567317612161629/2966569195</string>
</resources>

Hiển thị Banner Ads

Trong file activity_main.xml khai báo 1 AdView như sau:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.nguyennghia.admobads.MainActivity">

    <Button
        android:text="Open InterstitialAds"
        android:layout_centerInParent="true"
        android:id="@+id/btn_open_interstitial_ads"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.ads.AdView
        android:id="@+id/av_banner"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="@string/ad_unit_banner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </com.google.android.gms.ads.AdView>
</RelativeLayout>

Với Adsize sẽ có những hằng sau đây:

Size (WxH) Description Availability AdSize Constant
320×50 Standard Banner Phones and Tablets BANNER
320×100 Large Banner Phones and Tablets LARGE_BANNER
300×250 IAB Medium Rectangle Phones and Tablets MEDIUM_RECTANGLE
468×60 IAB Full-Size Banner Tablets FULL_BANNER
728×90 IAB Leaderboard Tablets LEADERBOARD
Screen width x 32|50|90 Smart Banner Phones and Tablets SMART_BANNER

Smart Banners sẽ căn theo chiều cao của thiết bị, để xác định chiều cao của AdView.

Nếu tạo bằng mã Java:

AdView adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("ca-app-pub-8567317612161629/1489835995");

File MainActivity.java

package com.example.nguyennghia.admobads;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private AdView avBanner;
    private AdRequest adRequest;
    private Button btnOpenInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnOpenInterstitialAd = (Button)findViewById(R.id.btn_open_interstitial_ads);
        avBanner = (AdView)findViewById(R.id.av_banner);
        adRequest = new AdRequest.Builder().build();

        // LLoad ads
        avBanner.loadAd(adRequest);
        btnOpenInterstitialAd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, FullAdsActivity.class);
                startActivity(intent);
            }
        });
    }
}

1 số Event của AdView

avBanner.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 an ad opens an overlay that
        // covers the screen.
    }

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

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

onAdLoaded()

onAdLoaded() là phương thức được gọi ngay sau khi quảng cáo được tải xong.

onAdFailedToLoad()

onAdFailedToLoad() là phương thức được gọi khi yêu cầu quảng cáo không thành công, có thể yêu cầu lại quảng cáo mới.

onAdOpened()

onAdOpened() là phương thức được gọi khi người dùng nhấp chuột vào quảng cáo.

onAdLeftApplication()

onAdLeftApplication() là phương thức được gọi ngay sau khi onAdOpened() được gọi. Activity hiển thị quảng cáo được mở lên.

onAdClosed()

onAdClosed() là phương thức được gọi khi người dùng trở lại từ Activity quảng cáo.

Load Ads Interstitial

package com.example.nguyennghia.admobads;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class FullAdsActivity extends AppCompatActivity {
    private static final String TAG = "FullAdsActivity";
    private InterstitialAd interstitialAd;
    private AdRequest adRequest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_full_ads);

        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(getResources().getString(R.string.ad_unit_full));

        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                Log.i(TAG, "onAdLoaded: ");
                interstitialAd.show();
            }

            @Override
            public void onAdOpened() {
                super.onAdOpened();
                Log.i(TAG, "onAdOpened: ");
            }

            @Override
            public void onAdLeftApplication() {
                super.onAdLeftApplication();
                Log.i(TAG, "onAdLeftApplication: ");
            }

            @Override
            public void onAdFailedToLoad(int i) {
                super.onAdFailedToLoad(i);
                Log.i(TAG, "onAdFailedToLoad: ");
            }

            @Override
            public void onAdClosed() {
                super.onAdClosed();
                Log.i(TAG, "onAdClosed: ");
            }
        });

        adRequest = new AdRequest.Builder().build();
        interstitialAd.loadAd(adRequest);
    }
}

Quảng cáo Banner thì Interstitial không cần khởi tạo View mà chỉ sử dụng lớp InterstitialAd sau đó đặt AdUnitId và sử dụng AdRequest để tải quảng cáo như quảng cáo Banner.

Nếu ứng dụng đang kiểm tra quảng cáo thì nên khởi tạo AdRequest như sau:

new AdRequest.Builder().addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID").build();

Với id được lấy ở LogCat như hình dưới đây:

Do đó AdRequest trong ví dụ là:

adRequest = new AdRequest.Builder().addTestDevice("9D50B2710767A863E237BDB4FC17C196").build();

Kết quả sau khi chạy app với chế độ kiểm tra quảng cáo:

Tải project demo

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024