Quảng cáo khi mở ứng dụng là một định dạng quảng cáo đặc biệt dành cho những nhà xuất bản muốn kiếm tiền màn hình tải ứng dụng của họ. Quảng cáo khi mở ứng dụng có thể được thiết kế để đóng bất cứ lúc nào được hiển thị khi người dùng đưa ứng dụng của bạn lên nền trước.
Quảng cáo khi mở ứng dụng tự động hiển thị một vùng nhỏ chứa thương hiệu để người dùng biết rằng họ đang ở ứng dụng của bạn. Sau đây là ví dụ về hình thức của quảng cáo khi mở ứng dụng:
Điều kiện tiên quyết
- Xem hết Hướng dẫn bắt đầu sử dụng.
- Trình bổ trợ Unity phiên bản 7.1.0 trở lên.
Luôn thử nghiệm bằng quảng cáo thử nghiệm
Mã mẫu sau đây chứa một mã đơn vị quảng cáo mà bạn có thể sử dụng để yêu cầu quảng cáo thử nghiệm. Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm thay vì quảng cáo thực tế cho mọi yêu cầu, giúp đảm bảo an toàn khi sử dụng.
Tuy nhiên, sau khi bạn đăng ký một ứng dụng trong giao diện web của Ad Manager và tạo mã đơn vị quảng cáo của riêng mình để sử dụng trong ứng dụng, hãy định cấu hình thiết bị của bạn làm thiết bị thử nghiệm một cách rõ ràng trong quá trình phát triển.
/21775744923/example/app-open
Triển khai
Các bước chính để tích hợp quảng cáo khi mở ứng dụng là:
- Tạo một lớp tiện ích
- Tải quảng cáo khi mở ứng dụng
- Theo dõi các sự kiện của quảng cáo khi mở ứng dụng
- Xem xét thời hạn của quảng cáo
- Theo dõi các sự kiện về trạng thái ứng dụng
- Hiển thị quảng cáo khi mở ứng dụng
- Dọn dẹp quảng cáo khi mở ứng dụng
- Tải trước quảng cáo khi mở ứng dụng tiếp theo
Tạo một lớp tiện ích
Tạo một lớp mới có tên là AppOpenAdController
để tải quảng cáo. Lớp này
kiểm soát 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.
using System;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
/// <summary>
/// Demonstrates how to use the Google Mobile Ads app open ad format.
/// </summary>
[AddComponentMenu("GoogleMobileAds/Samples/AppOpenAdController")]
public class AppOpenAdController : MonoBehaviour
{
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/app-open";
public bool IsAdAvailable
{
get
{
return _appOpenAd != null;
}
}
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
/// <summary>
/// Loads the app open ad.
/// </summary>
public void LoadAppOpenAd()
{
}
/// <summary>
/// Shows the app open ad.
/// </summary>
public void ShowAppOpenAd()
{
}
}
Tải quảng cáo khi mở ứng dụng
Bạn có thể hoàn thành việc tải một quảng cáo khi mở ứng dụng bằng cách sử dụng phương thức Load()
tĩnh cho lớp AppOpenAd
. Phương thức tải yêu cầu một mã đơn vị quảng cáo,
AdManagerAdRequest
và một trình xử lý hoàn thành.
được 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 là
được cung cấp dưới dạng tham số trong trình xử lý hoàn thành. Ví dụ bên dưới cho thấy cách
để tải một AppOpenAd
.
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/app-open";
private AppOpenAd appOpenAd;
/// <summary>
/// Loads the app open ad.
/// </summary>
public void LoadAppOpenAd()
{
// Clean up the old ad before loading a new one.
if (appOpenAd != null)
{
appOpenAd.Destroy();
appOpenAd = null;
}
Debug.Log("Loading the app open ad.");
// Create our request used to load the ad.
var adRequest = new AdManagerAdRequest();
// send the request to load the ad.
AppOpenAd.Load(_adUnitId, adRequest,
(AppOpenAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("app open ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("App open ad loaded with response : "
+ ad.GetResponseInfo());
appOpenAd = ad;
RegisterEventHandlers(ad);
});
}
Theo dõi các sự kiện của quảng cáo khi mở ứng dụng
Để tuỳ chỉnh thêm hành vi của quảng cáo, bạn có thể kết hợp với một số các sự kiện trong vòng đời của quảng cáo: mở, đóng, v.v. Nghe các sự kiện này bằng cách đăng ký người được uỷ quyền như minh hoạ dưới đây.
private void RegisterEventHandlers(AppOpenAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("App open ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("App open ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("App open ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("App open ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("App open ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("App open ad failed to open full screen content " +
"with error : " + error);
};
}
Xem xét thời hạn của quảng cáo
Để đảm bảo bạn không hiển thị quảng cáo đã hết hạn, hãy thêm một phương thức vào AppOpenAdController
để kiểm tra thời lượng kể từ khi quảng cáo của bạn được tải.
Sau đó, hãy sử dụng phương thức đó để kiểm tra xem quảng cáo có còn hợp lệ hay không.
Quảng cáo khi mở ứng dụng có thời gian chờ là 4 giờ. Lưu thời gian tải vào bộ nhớ đệm trong _expireTime
biến.
// send the request to load the ad.
AppOpenAd.Load(_adUnitId, adRequest,
(AppOpenAd ad, LoadAdError error) =>
{
// If the operation failed, an error is returned.
if (error != null || ad == null)
{
Debug.LogError("App open ad failed to load an ad with error : " +
error);
return;
}
// If the operation completed successfully, no error is returned.
Debug.Log("App open ad loaded with response : " + ad.GetResponseInfo());
// App open ads can be preloaded for up to 4 hours.
_expireTime = DateTime.Now + TimeSpan.FromHours(4);
_appOpenAd = ad;
});
Cập nhật thuộc tính IsAdAvailable
để kiểm tra _expireTime
nhằm xác nhận tệp đã tải
quảng cáo vẫn hợp lệ.
public bool IsAdAvailable
{
get
{
return _appOpenAd != null
&& _appOpenAd.IsLoaded()
&& DateTime.Now < _expireTime;
}
}
Theo dõi các sự kiện về trạng thái ứng dụng
Sử dụng AppStateEventNotifier
để theo dõi nền trước và
sự kiện trong nền. Lớp này sẽ kích hoạt sự kiện AppStateChanged
bất cứ khi nào
nền trước hoặc nền của ứng dụng.
private void Awake()
{
// Use the AppStateEventNotifier to listen to application open/close events.
// This is used to launch the loaded ad when we open the app.
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
}
private void OnDestroy()
{
// Always unlisten to events when complete.
AppStateEventNotifier.AppStateChanged -= OnAppStateChanged;
}
Khi chúng ta xử lý trạng thái AppState.Foreground
và IsAdAvailable
là true
, chúng tôi sẽ gọi ShowAppOpenAd()
để hiển thị quảng cáo.
private void OnAppStateChanged(AppState state)
{
Debug.Log("App State changed to : "+ state);
// if the app is Foregrounded and the ad is available, show it.
if (state == AppState.Foreground)
{
if (IsAdAvailable)
{
ShowAppOpenAd();
}
}
}
Hiển thị quảng cáo khi mở ứng dụng
Để hiển thị quảng cáo khi mở ứng dụng đã tải, hãy gọi phương thức Show()
trên
Thực thể AppOpenAd
. Quảng cáo chỉ có thể xuất hiện một lần cho mỗi lượt tải. Sử dụng CanShowAd()
để xác minh rằng quảng cáo đã sẵn sàng để hiển thị.
/// <summary>
/// Shows the app open ad.
/// </summary>
public void ShowAppOpenAd()
{
if (appOpenAd != null && appOpenAd.CanShowAd())
{
Debug.Log("Showing app open ad.");
appOpenAd.Show();
}
else
{
Debug.LogError("App open ad is not ready yet.");
}
}
Dọn dẹp quảng cáo khi mở ứng dụng
Khi bạn đã tạo xong AppOpenAd
, hãy nhớ gọi Destroy()
trước khi xoá tham chiếu đến nó:
appOpenAd.Destroy();
Thao tác này sẽ thông báo cho trình bổ trợ rằng đối tượng không còn được sử dụng nữa và bộ nhớ mà đối tượng đó không còn được sử dụng. chiếm lại có thể được xác nhận lại. Nếu không gọi được phương thức này, bộ nhớ sẽ bị rò rỉ.
Tải trước quảng cáo khi mở ứng dụng tiếp theo
AppOpenAd
là đối tượng dùng một lần. Điều này có nghĩa là sau khi một quảng cáo khi mở ứng dụng xuất hiện,
thì bạn không thể sử dụng lại đối tượng đó. Cách yêu cầu một quảng cáo khi mở ứng dụng khác,
bạn cần tạo một đối tượng AppOpenAd
mới.
Để chuẩn bị quảng cáo khi mở ứng dụng cho cơ hội hiển thị tiếp theo, hãy tải trước
quảng cáo khi mở ứng dụng sau khi OnAdFullScreenContentClosed
hoặc
OnAdFullScreenContentFailed
sự kiện quảng cáo đã được tạo.
private void RegisterReloadHandler(AppOpenAd ad)
{
...
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += ()
{
Debug.Log("App open ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadAppOpenAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("App open ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadAppOpenAd();
};
}
Khởi động nguội và màn hình tải
Cho đến nay, tài liệu này giả định rằng bạn chỉ hiển thị quảng cáo khi mở ứng dụng khi người dùng chạy ứng dụng trên nền trước khi ứng dụng bị tạm ngưng trong bộ nhớ. "Khởi động nguội" xảy ra khi ứng dụng của bạn đã được khởi chạy nhưng trước đó không bị tạm ngưng trong bộ nhớ.
Một ví dụ về khởi động nguội là khi người dùng mở ứng dụng lần đầu tiên. Trong trường hợp khởi động nguội, bạn sẽ không có quảng cáo khi mở ứng dụng đã tải trước đó sẵn sàng được hiển thị ngay lập tức. Độ trễ giữa thời điểm bạn yêu cầu quảng cáo và nhận được quảng cáo có thể tạo ra một tình huống trong đó người dùng có thể sử dụng ngay ứng dụng của bạn trước khi bị bất ngờ bởi quảng cáo không phù hợp. Bạn nên tránh điều này vì đây là trải nghiệm người dùng kém.
Cách ưu tiên để sử dụng quảng cáo khi mở ứng dụng khi khởi động nguội là dùng màn hình tải để tải nội dung trò chơi hoặc ứng dụng của bạn và chỉ hiển thị quảng cáo khi tải màn hình. Nếu ứng dụng đã tải xong và đã đưa người dùng đến nội dung chính của ứng dụng, thì bạn đừng hiển thị quảng cáo.
Các phương pháp hay nhất
Quảng cáo khi mở ứng dụng giúp bạn kiếm tiền từ màn hình tải của ứng dụng khi ứng dụng lần đầu tiên khởi chạy và chuyển đổi ứng dụng, nhưng điều quan trọng là phải giữ các để người dùng thích sử dụng ứng dụng của bạn.
- Hiển thị quảng cáo khi mở ứng dụng đầu tiên sau khi người dùng đã sử dụng ứng dụng của bạn vài lần.
- Hiển thị quảng cáo khi mở ứng dụng trong thời gian người dùng chờ ứng dụng của bạn tải.
- Nếu bạn có màn hình tải trong quảng cáo khi mở ứng dụng và màn hình tải
tải xong trước khi quảng cáo bị đóng, hãy đóng màn hình tải trong
trình xử lý sự kiện
OnAdDidDismissFullScreenContent
. - Trên nền tảng iOS,
AppStateEventNotifier
sẽ tạo thực thể cho mộtAppStateEventClient GameObject
.GameObject
này là bắt buộc cho các sự kiện để bắn, nên đừng phá huỷ nó. Các sự kiện ngừng kích hoạt nếuGameObject
là bị huỷ bỏ.
Tài nguyên khác
- Ví dụ về HelloWorld: Cách triển khai tối giản cho tất cả định dạng quảng cáo.