Hướng dẫn này cho bạn biết cách sử dụng tiện ích bổ sung quảng cáo gốc để triển khai quảng cáo gốc trong ứng dụng Unity, cũng như một số nội dung quan trọng cần xem xét trong quá trình triển khai.
Quảng cáo gốc là loại quảng cáo phù hợp với cả hình thức và chức năng trong trải nghiệm người dùng nơi 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 của Ad Manager cho phép nhà xuất bản hiển thị 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 tuỳ 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 hiển thị bằng cách sử dụng cùng các loại GameObjects
mà bạn đang
dùng để xây dựng ứ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 nơi quảng cáo đó đang hiển thị. Khi một quảng cáo gốc tải, ứng dụng của bạn sẽ nhận được một đối tượng gốc chứa các thành phần của quảng cáo đó và ứng dụng Unity (thay vì SDK) sẽ hiển thị các thành phần đó.
Điều kiện tiên quyết
- Trình bổ trợ Unity dành cho quảng cáo của Google trên thiết bị di động phiên bản 7.0.0 trở lên.
- Xem hết Hướng dẫn bắt đầu sử dụng.
- Tải xuống và cài đặt tiện ích bổ sung cho quảng cáo gốc.
Tải định dạng quảng cáo gốc
Quảng cáo gốc được tải thông qua lớp AdLoader
. Lớp này có lớp
AdLoader.Builder
riêng để tuỳ chỉnh trong quá trình tạo. Phương thức ForNativeAd()
sẽ định cấu hình LiveData để xử lý quảng cáo gốc.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Đăng ký sự kiện quảng cáo NavHost
Để nhận thông báo khi quảng cáo gốc tải thành công hoặc không tải được, hãy thêm uỷ quyền vào lớp AdLoader
cho những sự kiện được liệt kê bên dưới.
OnNativeAdLoaded
Được gọi khi quảng cáo gốc đã tải thành công. Bạn cần có một uỷ quyền 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());
Đặt yêu cầu quảng cáo cùng nhau
Đoạn mã dưới đây minh hoạ cách tạo AdLoader
được định cấu hình để yêu cầu quảng cáo gốc, đặt uỷ 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)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
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 EventHandle<AdFailedToLoadEventArgs>
.
Dưới đây là lý do khiến sự kiện này không tải được quảng cáo.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Hiển thị quảng cáo gốc
Khi một Quảng cáo gốc 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 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).
Xử lý lượt tải quảng cáo
Sự kiện OnNativeAdLoaded
thuộc loại EventHandler<NativeAdEventArgs>
. Bạn có thể truy xuất quảng cáo được đóng gói trong đối tượng NativeAd
từ NativeAdEventArgs
như sau:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Truy xuất nội dung quảng cáo gốc
Sau khi quảng cáo đã tải, bạn có thể truy cập vào các tài sản của các quảng cáo đó như sau. Nội dung đồ hoạ
được trả về dưới dạng đối tượng Texture2D
và nội dung văn bản được trả về dưới dạng đối tượng
string
.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the 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 HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Xin lưu ý rằng bạn chỉ nên truy cập vào thành phần quảng cáo trên chuỗi chính, ví dụ:
từ phương thức Update()
của một tập lệnh Unity. Ngoài ra, xin lưu ý rằng các thành phần sau
không phải lúc nào cũng được đảm bảo sẽ có mặt nên cần được kiểm tra trước khi
hiển thị:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Thành phần Lựa chọn quảng cáo
Bạn phải hiển thị thành phần 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. Ngoài ra, thành phần quảng cáo Lựa chọn quảng cáo cũng phải dễ nhìn thấy. Vì vậy, hãy chọn màu nền và hình ảnh phù hợp.
Đăng ký HOWMANY cho thành phần quảng cáo
Bạn phải đăng ký GameObject
để thành phần quảng cáo xuất hiện trong ứng dụng Unity. Nếu đăng ký thành công, phương thức dùng để đăng ký
GameObject
sẽ trả về bool
. Đối với List<GameObject>
, phương thức này sẽ trả về một int
cho biết số lượng GameObject
đã đăng ký thành công.
Nếu đăng ký một thành phần quảng cáo không thành công, thì hệ thống sẽ không nhận dạng được lượt hiển thị và lượt nhấp vào quảng cáo gốc tương ứng.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
GameObject
được đăng ký cho một thành phần 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 thành phần quảng cáo bị thiếu thành phần Collider
hoặc có thành phần được định cấu hình không chính xác, thì quảng cáo gốc sẽ hoạt động không đúng cách.
Trong đoạn mã dưới đây, BoxCollider
được thêm vào GameObject
, sử dụng
TextMesh
để hiển thị thành phần 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
, nó sẽ tự động điều chỉnh tỷ lệ để chứa đủ 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 hoạ
Mã sau đây minh hoạ cách truy xuất thành phần biểu tượng của quảng cáo gốc
đã tải thành công, hiển thị thành phần biểu tượng quảng cáo bằng cách đặt cấu trúc của Quad
và đăng ký GameObject
dùng để hiển thị thành phần này. Bạn cần lặp lại quy trình truy xuất thành phần quảng cáo này và đăng ký thành phần đó với lớp quảng cáo gốc cho từng thành phần mà ứng dụng hiển thị.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = 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 HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}