Bắt đầu

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ữ NonceLoaderNonceManager, 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 đầu
  • sendPlaybackEnd(): Khi phiên phát video của bạn kết thúc
  • sendAdClick(): Mỗi khi người xem nhấp vào một quảng cáo
  • sendTouch(): 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.