Bước đầu tiên là thêm SDK PAL Android vào ứng dụng của bạn.
Thêm SDK Android PAL làm thư viện
Kể từ phiên bản 18.0.0, SDK PAL được lưu trữ trên kho lưu trữ Maven của Google và có thể được thêm vào ứng dụng của bạn như sau:
app/build.gradle
...
dependencies {
implementation 'com.google.android.gms:play-services-pal:20.2.0'
...
}
Ngoài ra, bạn có thể tải SDK PAL xuống từ Kho lưu trữ Maven của Google và thêm vào ứng dụng của mình theo cách thủ công.
Tạo số chỉ dùng một lần
"Nonce" là một chuỗi được mã hoá đơn do PAL tạo bằng NonceLoader
.
SDK PAL đòi hỏi mỗi yêu cầu luồng mới phải đi kèm với một
số chỉ dùng một lần đã tạo. Tuy nhiên, số chỉ dùng một lần có thể được sử dụng lại cho nhiều yêu cầu quảng cáo trong
trong cùng một luồng. Để tạo số chỉ dùng một lần bằng SDK PAL, hãy thay đổi thành
MyActivity.java
. Để xem ứng dụng mẫu sử dụng PAL để tạo số chỉ dùng một lần,
tải ví dụ về Android xuống từ
GitHub.
Trước tiên, bạn cần nhập SDK PAL, tạo một số thuộc tính riêng tư để lưu trữ
NonceLoader
và NonceManager
, sau đó khởi chạy NonceLoader.
Bạn chỉ nên tạo một bản sao của lớp NonceLoader
cho
mỗi phiên người dùng trong ứng dụng của bạn trừ phi ứng dụng có nhiều trang hoặc trang tương đương
cấu trúc. Thao tác này giúp giữ nguyên bộ tương quan trang (&correlator
) cho
thời gian tồn tại của một trang hoặc một phiên của người dùng trên ứng dụng. Bạn vẫn có quyền kiểm soát
bộ tương quan luồng (&scor
) cần được đặt lại một lần cho mỗi luồng mới.
Tất cả các yêu cầu quảng cáo của cùng một luồng phải có cùng NonceLoader
và
giá trị tương quan luồng cho giới hạn tần suất và loại trừ cạnh tranh
để các tính năng mới hoạt động chính xác.
import android.app.Activity;
import android.os.Bundle;
import com.google.ads.interactivemedia.pal.NonceLoader;
import com.google.ads.interactivemedia.pal.NonceManager;
import com.google.ads.interactivemedia.pal.NonceRequest;
import com.google.ads.interactivemedia.pal.ConsentSettings;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends Activity {
...
private NonceLoader nonceLoader;
private NonceManager nonceManager = null;
private ConsentSettings consentSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The default value for allowStorage() is false, but can be
// changed once the appropriate consent has been gathered. The
// getConsentToStorage() method is a placeholder for the publisher's own
// method of obtaining user consent, either by integrating with a CMP or
// based on other methods the publisher chooses to handle storage consent.
boolean isConsentToStorage = getConsentToStorage();
videoView = findViewById(R.id.video_view);
videoView.setOnTouchListener(this::onVideoViewTouch);
consentSettings = ConsentSettings.builder()
.allowStorage(isConsentToStorage)
.build();
// It is important to instantiate the NonceLoader as early as possible to
// allow it to initialize and preload data for a faster experience when
// loading the NonceManager. A new NonceLoader will need to be instantiated
//if the ConsentSettings change for the user.
nonceLoader = new NonceLoader(this, consentSettings);
...
}
Tiếp theo, hãy tạo một hàm để kích hoạt việc tạo số chỉ dùng một lần. Bạn chỉ cần một số chỉ dùng một lần
cho tất cả các yêu cầu quảng cáo trong một luồng phát. Đối với mục đích thử nghiệm, bạn
có thể gọi hàm này khi nhấp vào một nút trong ứng dụng kiểm thử. Chiến lược phát hành đĩa đơn
Các tham số NonceRequest
được đặt tại đây là các tham số mẫu. Bạn nên đặt các tham số dựa trên đặc điểm của ứng dụng.
Hàm này kích hoạt việc tạo số chỉ dùng một lần theo cách không đồng bộ, vì vậy, bạn cần
triển khai AsyncTask
để xử lý thành công hoặc không thành công của yêu cầu số chỉ dùng một lần:
public void generateNonceForAdRequest() {
Set supportedApiFrameWorksSet = new HashSet();
// The values 2, 7, and 9 correspond to player support for VPAID 2.0,
// OMID 1.0, and SIMID 1.1.
supportedApiFrameWorksSet.add(2);
supportedApiFrameWorksSet.add(7);
supportedApiFrameWorksSet.add(9);
NonceRequest nonceRequest = NonceRequest.builder()
.descriptionURL("https://example.com/content1")
.iconsSupported(true)
.omidPartnerVersion("6.2.1")
.omidPartnerName("Example Publisher")
.playerType("ExamplePlayerType")
.playerVersion("1.0.0")
.ppid("testPpid")
.sessionId("Sample SID")
.supportedApiFrameworks(supportedApiFrameWorksSet)
.videoPlayerHeight(480)
.videoPlayerWidth(640)
.willAdAutoPlay(true)
.willAdPlayMuted(false)
.build();
NonceCallbackImpl callback = new NonceCallbackImpl();
nonceLoader
.loadNonceManager(nonceRequest)
.addOnSuccessListener(callback)
.addOnFailureListener(callback);
}
private class NonceCallbackImpl implements OnSuccessListener<NonceManager>, OnFailureListener {
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// from here you would trigger your ad request and move on to initialize content
}
@Override
public void onFailure(Exception error) {
Log.e("PALSample", "Nonce generation failed: " + error.getMessage());
}
}
Sau khi tạo trình quản lý số chỉ dùng một lần, bạn có thể truy xuất số chỉ dùng một lần bất cứ lúc nào bằng cách sử dụng
nonceManager.getNonce()
.
Đính kèm số chỉ dùng một lần vào yêu cầu quảng cáo
Để sử dụng số chỉ dùng một lần đã tạo, hãy thêm thẻ quảng cáo của bạn với thông số givn
và
giá trị số chỉ dùng một lần trước khi thực hiện yêu cầu quảng cáo của bạn.
/**
* The ad tag for your ad request, for example:
* https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external\
* /single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1\
* &cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
*
* For more sample ad tags, see
* developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
*/
private static final String DEFAULT_AD_TAG = "Your ad tag";
...
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// Append the nonce to the ad tag URL.
makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
}
Theo dõi các sự kiện phát
Cuối cùng, bạn cần triển khai nhiều trình xử lý sự kiện cho trình phát của mình. Để cho mục đích thử nghiệm, bạn có thể đính kèm chúng vào các sự kiện nhấp vào nút, nhưng trong , những sự kiện này sẽ được kích hoạt bởi các sự kiện người chơi thích hợp:
public void sendAdClick() {
if (nonceManager != null) {
nonceManager.sendAdClick();
}
}
public void sendPlaybackStart() {
if (nonceManager != null) {
nonceManager.sendPlaybackStart();
}
}
public void sendPlaybackEnd() {
if (nonceManager != null) {
nonceManager.sendPlaybackEnd();
}
}
public void onVideoViewTouch(MotionEvent e) {
if (nonceManager != null) {
nonceManager.sendTouch(e);
}
}
Sau đây là thời điểm gọi từng hàm trong quá trình triển khai:
sendPlaybackStart()
: Thời điểm phiên phát video của bạn bắt đầusendPlaybackEnd()
: Khi phiên phát video của bạn kết thúcsendAdClick()
: Mỗi khi người xem nhấp vào một quảng cáosendTouch()
: Trong mọi lượt tương tác chạm với người chơi
(Không bắt buộc) Gửi tín hiệu Google Ad Manager thông qua máy chủ quảng cáo của bên thứ ba
Khi bạn thiết lập máy chủ quảng cáo của bên thứ ba để làm việc với Google Ad Manager, hãy tham khảo vào tài liệu của máy chủ để thu thập và chuyển tiếp giá trị số chỉ dùng một lần trong mỗi quảng cáo yêu cầu. Ví dụ được cung cấp là về một URL yêu cầu quảng cáo có thông số số chỉ dùng một lần bao gồm. Thông số số chỉ dùng một lần bắt nguồn từ SDK PAL, thông qua máy chủ trung gian rồi sau đó đến Ad Manager, giúp kiếm tiền hiệu quả hơn.
Định cấu hình máy chủ quảng cáo của bên thứ ba để đưa số chỉ dùng một lần vào yêu cầu cho Ad Manager. Dưới đây là ví dụ về một thẻ quảng cáo được định cấu hình bên trong máy chủ quảng cáo của bên thứ ba:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
Để biết thêm thông tin chi tiết, hãy xem nội dung triển khai phía máy chủ Google Ad Manager hướng dẫn.
Ad Manager tìm givn=
để xác định giá trị số chỉ dùng một lần. Quảng cáo của bên thứ ba
máy chủ cần hỗ trợ một số macro của riêng mình, chẳng hạn như
%%custom_key_for_google_nonce%%
rồi thay thế bằng tham số truy vấn số chỉ dùng một lần
mà bạn đã cung cấp ở bước trước. Thông tin khác về cách thực hiện việc này
cần có trong tài liệu của máy chủ quảng cáo bên thứ ba.