1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ triển khai quảng cáo khi mở ứng dụng AdMob trong một ứng dụng Unity.
Sản phẩm bạn sẽ tạo ra
Lớp học lập trình này hướng dẫn bạn cách triển khai quảng cáo khi mở ứng dụng của AdMob trong một ứng dụng Unity bằng cách sử dụng Google Mobile Ads Unity plugin.

Nếu bạn gặp vấn đề (lỗi trong đoạn mã, lỗi ngữ pháp, từ ngữ không rõ ràng, v.v.) khi thực hành theo lớp học lập trình này, hãy báo cáo vấn đề bằng cách nhấp vào đường liên kết Báo cáo lỗi ở góc dưới bên trái của lớp học lập trình.
Kiến thức bạn sẽ học được
- Cách thiết lập trình bổ trợ Google Mobile Ads cho Unity
- Cách triển khai quảng cáo khi mở ứng dụng trong một ứng dụng Unity
Bạn cần có
- Unity 2018.4 trở lên
- Xcode 12 trở lên và CocoaPods (để triển khai cho iOS)
Bạn đánh giá thế nào về mức độ kinh nghiệm của mình với AdMob?
2. Thiết lập môi trường phát triển
Tải mã xuống
Sau khi tải tệp zip xuống, hãy giải nén nội dung của tệp đó. Bạn sẽ có một thư mục có tên admob-appopen-unity-main.
Ngoài ra, bạn có thể sao chép kho lưu trữ GitHub từ dòng lệnh:
$ git clone https://github.com/googlecodelabs/admob-appopen-unity
Kho lưu trữ này chứa hai thư mục:
starter: Mã khởi đầu mà bạn sẽ tạo trong lớp học lập trình này.
complete: Mã hoàn chỉnh cho lớp học lập trình này.
3. Thiết lập ứng dụng và đơn vị quảng cáo AdMob
Vì Unity là một SDK đa nền tảng, nên bạn cần thêm một ứng dụng và các đơn vị quảng cáo cho cả Android và iOS trong AdMob.
Thiết lập cho Android
Để thiết lập cho Android, bạn cần thêm một ứng dụng Android và tạo đơn vị quảng cáo.
Thêm ứng dụng Android
- Trong bảng điều khiển AdMob, hãy nhấp vào THÊM ỨNG DỤNG trong trình đơn Ứng dụng.
- Chọn Android làm nền tảng. Khi được hỏi Ứng dụng này có được đăng trên một cửa hàng ứng dụng được hỗ trợ không?, hãy nhấp vào KHÔNG.
- Nhập
AdMob app open advào trường tên ứng dụng. - Bạn không cần bật chỉ số người dùng để hoàn tất lớp học lập trình này. Tuy nhiên, bạn nên làm việc này vì nó giúp bạn hiểu rõ hơn về hành vi của người dùng. Nhấp vào THÊM để hoàn tất quy trình.
Tạo đơn vị quảng cáo
- Chọn ứng dụng Quảng cáo khi mở ứng dụng AdMob (Android) trong trình đơn Ứng dụng trên bảng điều khiển AdMob.
- Nhấp vào trình đơn Đơn vị quảng cáo.
|
|
Thường mất vài giờ để một đơn vị quảng cáo mới có thể phân phát quảng cáo.
Nếu bạn muốn kiểm thử ngay hành vi của quảng cáo, hãy sử dụng mã ứng dụng và mã đơn vị quảng cáo thử nghiệm có trong bảng mã ứng dụng/mã đơn vị quảng cáo Android và mã ứng dụng/mã đơn vị quảng cáo iOS.
Thiết lập cho iOS
Để thiết lập cho iOS, bạn cần thêm một ứng dụng iOS và tạo đơn vị quảng cáo.
Thêm ứng dụng iOS
- Trong bảng điều khiển AdMob, hãy nhấp vào THÊM ỨNG DỤNG trong trình đơn Ứng dụng.
- Chọn iOS làm nền tảng. Khi được hỏi Ứng dụng này có được đăng trên một cửa hàng ứng dụng được hỗ trợ không?, hãy nhấp vào KHÔNG.
- Nhập
AdMob app open advào trường tên ứng dụng. - Bạn không cần bật chỉ số người dùng để hoàn tất lớp học lập trình này. Tuy nhiên, bạn nên làm việc này vì nó giúp bạn hiểu rõ hơn về hành vi của người dùng. Nhấp vào THÊM để hoàn tất quy trình.
Tạo đơn vị quảng cáo
- Chọn ứng dụng Quảng cáo trong dòng của AdMob (iOS) trong trình đơn Ứng dụng trên bảng điều khiển AdMob.
- Nhấp vào trình đơn Đơn vị quảng cáo.
|
|
Thường mất vài giờ để một đơn vị quảng cáo mới có thể phân phát quảng cáo.
Nếu bạn muốn kiểm tra ngay hành vi của quảng cáo, hãy sử dụng mã ứng dụng thử nghiệm và mã đơn vị quảng cáo được liệt kê trong bảng sau.
Không bắt buộc: Sử dụng ứng dụng AdMob và đơn vị quảng cáo thử nghiệm
Nếu muốn làm theo lớp học lập trình thay vì tự tạo ứng dụng và đơn vị quảng cáo mới, bạn có thể sử dụng mã ứng dụng AdMob và mã đơn vị quảng cáo thử nghiệm được liệt kê trong các bảng sau.
Mã ứng dụng Android/mã đơn vị quảng cáo
Item | mã ứng dụng/mã đơn vị quảng cáo |
Mã ứng dụng AdMob |
|
Mã đơn vị quảng cáo |
|
Mã ứng dụng/mã đơn vị quảng cáo iOS
Item | mã ứng dụng/mã đơn vị quảng cáo |
Mã ứng dụng AdMob |
|
Mã đơn vị quảng cáo |
|
Để biết thêm thông tin về quảng cáo thử nghiệm, hãy xem tài liệu dành cho nhà phát triển về quảng cáo thử nghiệm trên Android và quảng cáo thử nghiệm trên iOS.
4. Thêm trình bổ trợ Google Mobile Ads cho Unity
Việc tích hợp trình bổ trợ Unity quảng cáo trên thiết bị di động của Google là bước đầu tiên để hiển thị quảng cáo AdMob và kiếm doanh thu.
Tải trình bổ trợ Unity quảng cáo trên thiết bị di động xuống
Trình bổ trợ Unity quảng cáo trên thiết bị di động của Google giúp nhà phát triển Unity dễ dàng phân phát Quảng cáo trên thiết bị di động của Google trên các ứng dụng Android và iOS. Trình bổ trợ này cung cấp giao diện C# để yêu cầu các quảng cáo mà tập lệnh C# sử dụng trong dự án Unity của bạn.
Hãy sử dụng đường liên kết bên dưới để tải gói Unity xuống cho trình bổ trợ.
Mở dự án khởi đầu
- Khởi chạy Unity Hub.
- Trong thẻ Projects (Dự án), hãy nhấp vào nút ADD (THÊM).
- Chuyển đến thư mục mà bạn đã giải nén mã đã tải xuống trong bước Thiết lập môi trường phát triển.
- Mở thư mục starter.
- Bạn sẽ thấy dự án starter trong danh sách dự án. Nhấp vào dự án để mở dự án đó trong Trình chỉnh sửa Unity.
Nhập trình bổ trợ Unity quảng cáo trên thiết bị di động
- Trong trình chỉnh sửa Unity, hãy chọn Assets > Import Package > Custom Package (Tài sản > Nhập gói > Gói tuỳ chỉnh) trong trình đơn.
- Chọn
GoogleMobileAds-{VERSION}.unitypackagemà bạn đã tải xuống ở bước trước. - Hãy đảm bảo rằng bạn đã chọn tất cả các tệp, rồi nhấp vào Nhập.
Đặt mã ứng dụng AdMob
- Trong Trình chỉnh sửa Unity, hãy chọn Nội dung > Quảng cáo trên thiết bị di động của Google > Cài đặt trong trình đơn.
- Nhập mã ứng dụng AdMob trên Android và iOS của bạn vào từng trường. Nếu bạn muốn làm theo lớp học lập trình thay vì tự tạo ứng dụng và đơn vị quảng cáo mới, hãy nhập mã ứng dụng AdMob thử nghiệm như sau.

5. Tạo một lớp tiện ích
Tạo một lớp mới tên là AppOpenAdManager trong thư mục Scripts. Lớp này sẽ quản lý một biến thực thể để theo dõi một quảng cáo đã tải và mã đơn vị quảng cáo cho từng nền tảng.
AppOpenAdManager.cs
using System;
using GoogleMobileAds.Api;
using UnityEngine;
public class AppOpenAdManager
{
#if UNITY_ANDROID
// Test ad unit ID: ca-app-pub-3940256099942544/3419835294
private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
// Test ad unit ID: ca-app-pub-3940256099942544/5662855259
private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
private const string AD_UNIT_ID = "unexpected_platform";
#endif
private static AppOpenAdManager instance;
private AppOpenAd ad;
private bool isShowingAd = false;
public static AppOpenAdManager Instance
{
get
{
if (instance == null)
{
instance = new AppOpenAdManager();
}
return instance;
}
}
private bool IsAdAvailable
{
get
{
return ad != null;
}
}
public void LoadAd()
{
// TODO: Load an app open ad.
}
}
Tải một quảng cáo
Bạn có thể tải một quảng cáo bằng cách sử dụng phương thức AppOpenAd.LoadAd() tĩnh. Phương thức tải này yêu cầu một mã đơn vị quảng cáo, một chế độ ScreenOrientation, một đối tượng AdRequest và một trình xử lý hoàn thành để gọi khi tải quảng cáo thành công hoặc không thành công.
Đối tượng AppOpenAd đã tải được cung cấp dưới dạng một thông số trong trình xử lý hoàn thành. Triển khai phương thức LoadAd() như sau.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void LoadAd()
{
AdRequest request = new AdRequest.Builder().Build();
// Load an app open ad for portrait orientation
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
// Handle the error.
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
// App open ad is loaded.
ad = appOpenAd;
}));
}
}
Hiển thị quảng cáo
Trước khi hiển thị quảng cáo, hãy đăng ký cho từng trình xử lý sự kiện để theo dõi từng sự kiện quảng cáo.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void ShowAdIfAvailable()
{
if (!IsAdAvailable || isShowingAd)
{
return;
}
ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
ad.OnPaidEvent += HandlePaidEvent;
ad.Show();
}
private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Closed app open ad");
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
isShowingAd = false;
LoadAd();
}
private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
{
Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
LoadAd();
}
private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Displayed app open ad");
isShowingAd = true;
}
private void HandleAdDidRecordImpression(object sender, EventArgs args)
{
Debug.Log("Recorded ad impression");
}
private void HandlePaidEvent(object sender, AdValueEventArgs args)
{
Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
args.AdValue.CurrencyCode, args.AdValue.Value);
}
}
Xem xét thời hạn của quảng cáo
Các tệp tham chiếu quảng cáo trong quảng cáo khi mở ứng dụng sẽ hết hạn sau 4 giờ. Sau 4 giờ kể từ thời điểm yêu cầu, quảng cáo được hiển thị sẽ không còn hợp lệ và không thể tạo doanh thu nữa.
Để đảm bảo bạn không hiển thị quảng cáo đã hết hạn, hãy sửa đổi thuộc tính IsAdAvailable thành AppOpenAdManager để kiểm tra thời lượng kể từ khi quảng cáo của bạn được tải. Sau đó, hãy dùng phương thức đó để kiểm tra xem quảng cáo có còn hợp lệ hay không.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
// TODO: Add loadTime field
private DateTime loadTime;
private bool IsAdAvailable
{
get
{
// TODO: Consider ad expiration
return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
}
}
public void LoadAd()
{
if (IsAdAvailable)
{
return;
}
AdRequest request = new AdRequest.Builder().Build();
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
ad = appOpenAd;
Debug.Log("App open ad loaded");
// TODO: Keep track of time when the ad is loaded.
loadTime = DateTime.UtcNow;
}));
}
}
6. Cập nhật cảnh để tải/hiển thị quảng cáo
Cập nhật phương thức Start() trong lớp MainScene để tải quảng cáo khi mở ứng dụng khi cảnh bắt đầu.
Để nhận được thông báo về các sự kiện đưa ứng dụng lên nền trước, bạn nên theo dõi singleton AppStateEventNotifier. Bằng cách triển khai uỷ quyền AppStateEventNotifier.AppStateChanged, ứng dụng của bạn sẽ nhận được thông báo về các sự kiện chạy ứng dụng và đưa ứng dụng lên nền trước, đồng thời có thể hiển thị quảng cáo.
MainScene.cs
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;
public class MainScene : MonoBehaviour
{
public void Start()
{
// TODO: Request an app open ad.
MobileAds.Initialize((initStatus) =>
{
AppOpenAdManager.Instance.LoadAd();
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
});
}
public void OnAppStateChanged(AppState state)
{
if (state == AppState.Foreground)
{
// TODO: Show an app open ad if available.
AppOpenAdManager.Instance.ShowAdIfAvailable();
}
}
}
Vậy là xong! Tạo và chạy dự án trên một thiết bị hoặc trình mô phỏng. Sau khi ứng dụng khởi chạy, hãy đợi vài giây để quảng cáo tải xong.
Sau đó, khi bạn chuyển lại sang ứng dụng từ các ứng dụng/màn hình chính khác, quảng cáo khi mở ứng dụng sẽ xuất hiện như bên dưới.

7. Đã xong!
Bạn đã hoàn tất lớp học lập trình này. Bạn có thể tìm thấy mã hoàn chỉnh cho lớp học lập trình này trong thư mục
complete.
