Bộ chuyển đổi dàn xếp sẽ nhận các thông báo và yêu cầu từ SDK quảng cáo trên thiết bị di động của Google, đồng thời giao tiếp với SDK mạng của bên thứ ba để đáp ứng các yêu cầu đó.
Hướng dẫn này dành cho các mạng quảng cáo đang tìm cách tạo một bộ chuyển đổi dàn xếp quảng cáo có tặng thưởng cho tính năng Dàn xếp quảng cáo trên thiết bị di động của Google. Chúng tôi sử dụng SDK mẫu trong các đoạn mã dưới đây cho mục đích minh hoạ. Bạn có thể tìm thấy hoạt động triển khai đầy đủ của một bộ chuyển đổi được tạo cho SDK mẫu này trong dự án Dàn xếpAndroid của chúng tôi. Hướng dẫn này giải thích cách tạo bộ chuyển đổi.
Xác định tên lớp bộ chuyển đổi và tham số máy chủ
Những mạng quảng cáo được dàn xếp thông qua nền tảng dàn xếp AdMob thường yêu cầu một hoặc nhiều giá trị nhận dạng để nhận dạng một nhà xuất bản. Các giá trị nhận dạng này được biểu thị dưới dạng thông số máy chủ và được xác định khi định cấu hình mạng quảng cáo bên thứ ba cho hoạt động dàn xếp trong giao diện người dùng AdMob.
Trước khi phát triển bộ chuyển đổi dàn xếp, bạn phải cung cấp cho Google tên lớp của bộ chuyển đổi đó và các thông số bắt buộc khác để có quyền truy cập vào mạng quảng cáo của bạn.
Triển khai Lớp chuyển đổi
Bước đầu tiên là triển khai lớp trừu tượng Adapter (Bộ chuyển đổi):
...
import com.google.android.gms.ads.mediation.Adapter;
...
public class SampleAdapter extends Adapter {
...
}
Thay đổi này đảm bảo rằng lớp của bạn triển khai một số phương thức được thảo luận dưới đây.
Số phiên bản báo cáo
Bộ chuyển đổi đó phải báo cáo cho SDK quảng cáo trên thiết bị di động của Google cả phiên bản của chính bộ chuyển đổi đó và phiên bản SDK của bên thứ ba. Các phiên bản được báo cáo bằng VersionInfo
.
Bộ chuyển đổi nguồn mở và được tạo phiên bản của Google
sử dụng lược đồ phiên bản bộ chuyển đổi 4 chữ số, nhưng VersionInfo
chỉ cho phép 3 chữ số. Để giải quyết vấn đề này, bạn nên kết hợp 2 chữ số cuối vào phiên bản bản vá, như thể hiện dưới đây:
...
import com.google.android.gms.ads.VersionInfo;
...
public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
...
@Override
public VersionInfo getVersionInfo() {
String versionString = BuildConfig.VERSION_NAME;
String[] splits = versionString.split("\\.");
if (splits.length >= 4) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
return new VersionInfo(major, minor, micro);
}
return new VersionInfo(0, 0, 0);
}
@Override
public VersionInfo getSDKVersionInfo() {
String versionString = SampleAdRequest.getSDKVersion();
String[] splits = versionString.split("\\.");
if (splits.length >= 3) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]);
return new VersionInfo(major, minor, micro);
}
return new VersionInfo(0, 0, 0);
}
...
}
Khởi chạy bộ chuyển đổi
Khi một ứng dụng khởi chạy SDK Quảng cáo của Google trên thiết bị di động, initialize()
sẽ được gọi trên tất cả các bộ chuyển đổi đã thiết lập cho ứng dụng đó trong giao diện người dùng AdMob.
Đối số List<MediationConfiguration>
cung cấp thông tin về tất cả
các vị trí được định cấu hình cho mạng quảng cáo của bạn trong giao diện người dùng AdMob. Hãy sử dụng thông tin này
để khởi chạy SDK mạng quảng cáo của bạn. Sau khi SDK mạng quảng cáo
được khởi chạy, hãy báo cáo việc khởi chạy thành công hoặc không thành công cho SDK
Quảng cáo trên thiết bị di động của Google bằng cách gọi phương thức onInitializationSucceeded()
hoặc
onInitializationFailed()
trên InitializationCompleteCallback
đối số đã cung cấp trong lệnh gọi initialize()
.
...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...
public class SampleAdapter extends Adapter {
...
@Override
public void initialize(
Context context,
InitializationCompleteCallback initializationCompleteCallback,
List<MediationConfiguration> mediationConfigurations) {
if (context == null) {
initializationCompleteCallback.onInitializationFailed(
"Initialization Failed: Context is null.");
return;
}
// The Sample SDK doesn't have an initialization method, so this example
// immediately reports a success callback.
initializationCompleteCallback.onInitializationSucceeded();
}
...
}
Yêu cầu quảng cáo có tặng thưởng
Sử dụng phương thức loadRewardedAd()
để yêu cầu quảng cáo có tặng thưởng. Giữ một tệp tham chiếu đến
MediationAdLoadCallback
, cho phép bạn báo cáo một lượt tải quảng cáo thành công hoặc không thành công
cho SDK quảng cáo trên thiết bị di động của Google.
Đối tượng MediationRewardedAdCallback
sẽ có sẵn sau khi gọi
onSuccess()
. Sau đó, bạn sẽ sử dụng đối tượng này để chuyển tiếp các sự kiện quảng cáo khác như lượt nhấp hoặc
phần thưởng được cấp.
...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationRewardedAd;
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
...
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
/**
* A MediationAdLoadCallback that handles any callback when a Sample rewarded
* ad finishes loading.
*/
private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;
/**
* Represents a SampleRewardedAd.
*/
private SampleRewardedAd sampleRewardedAd;
/**
* Used to forward rewarded video ad events to the Google Mobile Ads SDK..
*/
private MediationRewardedAdCallback rewardedAdCallback;
...
// Hold a reference to the MediationAdLoadCallback object to report ad load
// events to the Google Mobile Ads SDK.
@Override
public void loadRewardedAd(
MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
mediationAdLoadCallback) {
adLoadCallBack = mediationAdLoadCallback;
MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;
String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);
sampleRewardedAd = new SampleRewardedAd(adUnitId);
SampleAdRequest request = new SampleAdRequest();
sampleRewardedAd.setListener(this);
sampleRewardedAd.loadAd(request);
}
// Hold a reference to the MediationRewardedAdCallback object to report ad
// lifecycle events to the Google Mobile Ads SDK.
@Override
public void onRewardedAdLoaded() {
rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
}
@Override
public void onRewardedAdFailedToLoad(SampleErrorCode error) {
mediationAdLoadCallBack.onFailure(error.toString());
}
...
}
Hiển thị quảng cáo
SDK quảng cáo trên thiết bị di động của Google có thể gọi phương thức showAd()
của bộ chuyển đổi bất cứ lúc nào
sau khi SDK được thông báo về việc tải quảng cáo thành công. Bộ chuyển đổi sẽ
hiển thị quảng cáo có tặng thưởng. Nếu quảng cáo không thể hiển thị vì bất kỳ lý do nào, hãy thực hiện lệnh gọi lại
onAdFailedToShow()
.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@Override
public void showAd(Context context) {
if (!(context instanceof Activity)) {
rewardedAdCallback.onAdFailedToShow(
"An activity context is required to show Sample rewarded ad.");
return;
}
Activity activity = (Activity) context;
if (!sampleRewardedAd.isAdAvailable()) {
rewardedAdCallback.onAdFailedToShow("No ads to show.");
return;
}
sampleRewardedAd.showAd(activity);
}
...
}
Báo cáo sự kiện quảng cáo cho SDK quảng cáo trên thiết bị di động
Sau khi hiển thị quảng cáo, bộ chuyển đổi sẽ báo cáo các sự kiện trong vòng đời quảng cáo
phù hợp với SDK quảng cáo trên thiết bị di động của Google bằng cách sử dụng đối tượngMediationRewardedAdCallback
được cung cấp tại thời điểm tải quảng cáo thành công.
Thông thường, các lệnh gọi lại này được chuyển tiếp từ các phương thức gọi lại do SDK mạng quảng cáo kích hoạt. Ví dụ này triển khai các lệnh gọi lại SDK mẫu và liên kết các lệnh gọi lại này với các lệnh gọi lại có trên MediationRewardedAdCallback
.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@Override
public void onAdRewarded(final String rewardType, final int amount) {
RewardItem rewardItem =
new RewardItem() {
@Override
public String getType() {
return rewardType;
}
@Override
public int getAmount() {
return amount;
}
};
rewardedAdCallback.onUserEarnedReward(rewardItem);
}
@Override
public void onAdClicked() {
rewardedAdCallback.reportAdClicked();
}
@Override
public void onAdFullScreen() {
rewardedAdCallback.onAdOpened();
rewardedAdCallback.onVideoStart();
rewardedAdCallback.reportAdImpression();
}
@Override
public void onAdClosed() {
rewardedAdCallback.onAdClosed();
}
@Override
public void onAdCompleted() {
rewardedAdCallback.onVideoComplete();
}
...
}
Dưới đây là thông tin chi tiết về các sự kiện quảng cáo cần được báo cáo cho SDK quảng cáo trên thiết bị di động của Google:
Sự kiện quảng cáo | Nội dung mô tả |
---|---|
onAdOpened() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng quảng cáo sẽ được mở. |
onVideoStart() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng quảng cáo có tặng thưởng đã bắt đầu phát. |
reportAdImpression() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng đã có một lượt hiển thị trên quảng cáo. |
onVideoComplete() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng quảng cáo có tặng thưởng đã phát xong. |
onUserEarnedReward() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng người dùng đã được thưởng. |
reportAdClicked() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng đã có lượt nhấp vào quảng cáo. |
onAdClosed() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng quảng cáo đã bị đóng. |
onAdFailedToShow() | Thông báo cho SDK quảng cáo trên thiết bị di động của Google rằng quảng cáo không hiển thị. |