Tài liệu hướng dẫn này trình bày cách sử dụng plugin Unity quảng cáo trên thiết bị di động của Google để triển khai Quảng cáo gốc nâng cao của AdMob trong ứng dụng Unity, cũng như một số điểm quan trọng cần xem xét trong suốt quá trình triển khai.
Quảng cáo gốc phù hợp với cả hình thức và chức năng của trải nghiệm người dùng mà quảng cáo được đặt. Các quảng cáo này cũng phù hợp với thiết kế trực quan của ứng dụng mà chúng hiển thị. Định dạng quảng cáo gốc nâng cao của AdMob cho phép nhà xuất bản hiển thị những quảng cáo liền mạch với nội dung. Bạn có thể sử dụng công nghệ này để triển khai các tính năng hiển thị có khả năng tùy chỉnh cao giúp tận dụng tối đa mã gốc trong các ứng dụng Unity.
Quảng cáo gốc nâng cao được hiển thị bằng cách sử dụng các loại GameObjects
tương tự như loại
mà bạn đã tạo ứng dụng và có thể được định dạng cho phù hợp với thiết kế
trực quan của trải nghiệm người dùng mà quảng cáo đang hiển thị. Khi quảng cáo gốc tải,
ứng dụng của bạn sẽ nhận được đối tượng gốc chứa nội dung và ứng dụng Unity (thay vì
SDK) sẽ hiển thị các nội dung đó.
Có hai nội dung mô tả trường quảng cáo gốc nâng cao chuẩn:
lượt cài đặt ứng dụng và
nội dung.
Cả hai nội dung này đều được biểu thị bằng UnifiedNativeAd
và đối tượng này chứa phần tử
dành cho quảng cáo gốc. Một số phần tử có thể không hiển thị, vì vậy, hãy kiểm tra sự hiện diện của các phần tử đó
trước khi hiển thị.
Hãy đọc các câu chuyện thành công của khách hàng:
nghiên cứu điển hình 1,
nghiên cứu điển hình 2.
Điều kiện tiên quyết
- Nếu bạn đang chuyển đổi từ phiên bản công khai của plugin Quảng cáo trên thiết bị di động của Google trên GitHub, thì trước tiên, hãy xóa tất cả tệp Quảng cáo trên thiết bị di động của Google hiện có.
- Tải xuống phiên bản dành cho quảng cáo gốc của plugin Unity quảng cáo trên thiết bị di động của Google để hỗ trợ Quảng cáo gốc nâng cao.
- Hãy làm theo hướng dẫn Bắt đầu sử dụng để Nhập plugin Unity quảng cáo trên thiết bị di động và Bao gồm SDK quảng cáo trên thiết bị di động.
Tải các định dạng quảng cáo gốc
Hệ thống tải Quảng cáo gốc nâng cao thông qua lớp AdLoader
. Lớp này có lớp
AdLoader.Builder
riêng để tùy chỉnh quảng cáo trong quá trình tạo. Phương thức
ForUnifiedNativeAd()
sẽ định cấu hình AdLoader
để xử lý
quảng cáo gốc hợp nhất
.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForUnifiedNativeAd()
.Build();
}
Đăng ký sự kiện quảng cáo AdLoader
Để được thông báo khi quảng cáo gốc nâng cao tải thành công hoặc không thể tải,
hãy thêm ủy quyền vào lớp AdLoader
cho các sự kiện được liệt kê bên dưới.
OnUnifiedNativeAdLoaded
- Được gọi khi quảng cáo gốc hợp nhất đã tải thành công. Bắt buộc phải có đại biểu cho sự kiện này để truy cập vào quảng cáo đã tải.
OnAdFailedToLoad
- Được gọi khi quảng cáo gốc không thể tải.
Tải quảng cáo
Sau khi bạn đã tạo xong AdLoader
, hãy gọi phương thức LoadAd()
để
yêu cầu quảng cáo:
adLoader.LoadAd(new AdRequest.Builder().Build());
Đồng thời, hãy tạo yêu cầu quảng cáo
Đoạn mã bên dưới minh họa cách tạo AdLoader
được
định cấu hình để yêu cầu
quảng cáo gốc hợp nhất
,
đặt ủy quyền cho các lượt tải quảng cáo thành công và không thành công, đồng thời tạo yêu cầu quảng cáo.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForUnifiedNativeAd()
.Build();
adLoader.OnUnifiedNativeAdLoaded += this.HandleUnifiedNativeAdLoaded;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Xử lý các lượt tải quảng cáo không thành công
Sự kiện OnAdFailedToLoad
thuộc loại EventHandler<AdFailedToLoadEventArgs>
.
Dưới đây là lý do sự kiện này tải quảng cáo không thành công.
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
MonoBehaviour.print("Native ad failed to load: " + args.Message);
}
Hiển thị quảng cáo
Khi Quảng cáo gốc nâng cao tải, sự kiện quảng cáo cho định dạng quảng cáo tương ứng sẽ được gọi. Sau đó, ứng dụng của bạn chịu trách nhiệm về việc hiển thị quảng cáo, mặc dù ứng dụng không nhất thiết phải thực hiện ngay công việc đó.
Xử lý lượt tải quảng cáo
Sự kiện OnUnifiedNativeAdLoaded
thuộc loại
EventHandler<UnifiedNativeAdEventArgs>
. Bạn có thể truy xuất quảng cáo được đóng gói trong đối tượng
UnifiedNativeAd
từ UnifiedNativeAdEventArgs
như
sau:
private UnifiedNativeAd nativeAd;
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Truy xuất tài sản quảng cáo gốc
Sau khi quảng cáo đã tải, bạn có thể truy cập vào nội dung của các quảng cáo đó như được hiển thị dưới đây. Nội dung đồ họa
được trả lại dưới dạng đối tượng Texture2D
và nội dung văn bản được trả lại dưới dạng đối tượng
string
.
private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
...
if (this.unifiedNativeAdLoaded) {
this.unifiedNativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified native ad loaded.");
this.nativeAd = args.nativeAd;
this.unifiedNativeAdLoaded = true;
}
Lưu ý rằng bạn chỉ nên truy cập vào nội dung quảng cáo trên chuỗi chính, ví dụ:
từ phương thức Update()
của tập lệnh Unity. Ngoài ra, hãy lưu ý rằng không phải lúc nào các nội dung sau
cũng hiển thị và bạn phải kiểm tra trước khi hiển thị
các nội dung đó:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Tài sản Lựa chọn quảng cáo
Đó là yêu cầu để hiển thị nội dung quảng cáo Lựa chọn quảng cáo dưới dạng một phần của Quảng cáo gốc nâng cao. Ngoài ra, điều quan trọng là nội dung quảng cáo AdChoices phải dễ thấy, vì vậy, hãy chọn màu nền và hình ảnh phù hợp.
Đăng ký GameObjects cho tài sản quảng cáo
Đối với mỗi nội dung quảng cáo sẽ hiển thị, bạn phải đăng ký sử dụng GameObject
để
hiển thị nội dung trong ứng dụng Unity. Mọi phương thức để đăng ký GameObject
cho một nội dung quảng cáo sẽ trả lại một bool
cho biết việc đăng ký có thành công hay không.
Nếu việc đăng ký nội dung quảng cáo không thành công, các lượt hiển thị và lượt nhấp trên
quảng cáo gốc tương ứng sẽ không được công nhận.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
GameObject
được đăng ký cho một nội dung quảng cáo phải có thành phần
Collider
lồi đại diện cho kích thước và hình dạng của
GameObject
. Nếu các đối tượng GameObject
đã đăng ký cho nội dung quảng cáo bị thiếu thành phần
Collider
hoặc có thành phần bị định cấu hình sai, thì quảng cáo gốc
nâng cao sẽ hoạt động không đúng cách.
Trong đoạn mã dưới đây, BoxCollider
được thêm vào GameObject
, trong đó sử dụng
TextMesh
để hiển thị nội dung quảng cáo dòng tiêu đề của
quảng cáo gốc
. Sau khi đính kèm BoxCollider
vào GameObject
, đối tượng sẽ
tự động chuyển tỉ lệ để phù hợp với văn bản của thành phần TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Bản minh họa
Mã sau đây minh họa cách truy xuất nội dung biểu tượng của
quảng cáo gốc
đã tải thành công, hiển thị nội dung biểu tượng của quảng cáo bằng cách đặt họa tiết của Quad
và đăng ký
sử dụng GameObject
để hiển thị nội dung đó.
Bạn nên lặp lại quy trình truy xuất nội dung quảng cáo này và đăng ký nội dung đó với lớp quảng cáo gốc
cho từng nội dung mà ứng dụng hiển thị.
private GameObject icon;
private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
...
if (this.unifiedNativeAdLoaded) {
this.unifiedNativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified native ad loaded.");
this.nativeAd = args.nativeAd;
this.unifiedNativeAdLoaded = true;
}