Bắt đầu sử dụng SDK IMA DAI

IMA SDK giúp bạn dễ dàng tích hợp quảng cáo đa phương tiện vào trang web và ứng dụng của mình. SDK IMA có thể yêu cầu quảng cáo từ bất kỳ máy chủ quảng cáo tuân thủ VAST nào và quản lý việc phát quảng cáo trong ứng dụng của bạn. Với SDK IMA DAI, các ứng dụng tạo ra một yêu cầu phát trực tuyến cho video quảng cáo và nội dung – VOD hoặc nội dung trực tiếp. Sau đó, SDK sẽ trả về một luồng video kết hợp để bạn không phải quản lý việc chuyển đổi giữa video quảng cáo và video nội dung trong ứng dụng của mình.

Chọn giải pháp DAI mà bạn quan tâm

DAI (Chèn quảng cáo động) phân phát nhóm

IMA SDK giúp bạn dễ dàng tích hợp quảng cáo đa phương tiện vào trang web và ứng dụng của mình. SDK IMA có thể yêu cầu quảng cáo từ bất kỳ máy chủ quảng cáo tuân thủ VAST nào và quản lý việc phát quảng cáo trong ứng dụng của bạn. Với SDK IMA DAI, các ứng dụng tạo ra một yêu cầu phát trực tuyến cho video quảng cáo và nội dung – VOD hoặc nội dung trực tiếp. Sau đó, SDK sẽ trả về một luồng video kết hợp để bạn không phải quản lý việc chuyển đổi giữa video quảng cáo và video nội dung trong ứng dụng của mình.

Hướng dẫn này minh hoạ cách phát luồng Phân phát nhóm DAI, bằng cách sử dụng SDK IMA DAI cho Android với một trình phát video đơn giản để phát luồng trực tiếp và VOD. Nếu bạn muốn xem hoặc làm theo quy trình tích hợp mẫu hoàn chỉnh, hãy tải ví dụ về tính năng phân phát nhóm xuống.

Tổng quan về việc phân phát nhóm IMA DAI

  • StreamRequest: Đối tượng xác định yêu cầu truyền đến các máy chủ quảng cáo của Google. Bạn phải tạo bằng cách sử dụng ImaSdkFactory.createPodStreamRequest() hoặc ImaSdkFactory.createPodVodStreamRequest() để bật tính năng phân phát nhóm. Các phương thức này đòi hỏi phải có Mã mạngcreatePodStreamRequest cũng đòi hỏi một Khoá thành phần tuỳ chỉnh và một khoá API không bắt buộc. Cả hai đều bao gồm các tham số không bắt buộc khác.

  • StreamManager: Một đối tượng xử lý hoạt động giao tiếp giữa luồng video và SDK IMA DAI, chẳng hạn như kích hoạt ping theo dõi và chuyển tiếp các sự kiện luồng đến nhà xuất bản.

Điều kiện tiên quyết

Thiết lập các biến phân phát nhóm

Tất cả những thay đổi cần thiết để phân phát nhóm đã được thực hiện trong SampleAdsWrapper.java. Bước đầu tiên là cập nhật các biến không đổi.

Dưới đây là các hằng số yêu cầu luồng quảng cáo sẽ được thêm vào:

  • STREAM_URL: Chỉ dùng cho Sự kiện phát trực tiếp – URL của luồng video do người chỉnh sửa tệp kê khai hoặc đối tác bên thứ ba cung cấp thông qua tính năng phân phát nhóm. Bạn nên chèn mã luồng do SDK IMA DAI cung cấp trước khi đưa ra yêu cầu. Trong trường hợp này, URL luồng sẽ bao gồm phần giữ chỗ ("[[STREAMID]]"), được thay thế bằng mã luồng trước khi đưa ra yêu cầu.

  • NETWORK_CODE: Mã mạng cho tài khoản Ad Manager 360 của bạn.

  • CUSTOM_ASSET_KEY: Chỉ dùng cho Sự kiện phát trực tiếp – Khoá thành phần tuỳ chỉnh giúp xác định sự kiện phân phát nhóm của bạn trong Ad Manager 360. Trình này có thể được tạo bởi người chỉnh sửa tệp kê khai hoặc đối tác phân phát nhóm của bên thứ ba.

  • API_KEY: Chỉ dùng cho Sự kiện phát trực tiếp – Một khoá API không bắt buộc có thể cần thiết để truy xuất mã luồng từ SDK IMA DAI.

Android DAI BasicExample được thiết kế để phát nhiều loại luồng khác nhau, nhưng đối với tính năng phân phát nhóm, bạn được thiết lập để chỉ phát một luồng duy nhất. Hãy thay đổi phần biến của ví dụ này sao cho khớp với phần sau:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

Tạo yêu cầu luồng nhóm trực tiếp hoặc VOD để bật tính năng phân phát nhóm

Phân phát nhóm trong sự kiện phát trực tiếp

Xoá phương thức buildStreamRequest() từng dùng để chuyển đổi giữa việc tạo nhiều loại luồng khác nhau. Sau đó, thay đổi requestAndPlayAds() để gọi hàm ImaSdkFactory.createPodStreamRequest() nhằm tạo một yêu cầu quảng cáo phân phát nhóm trực tiếp. Cuối cùng, hãy yêu cầu luồng bằng AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Phân phát nhóm luồng VOD

Xoá phương thức buildStreamRequest() từng dùng để chuyển đổi giữa việc tạo nhiều loại luồng khác nhau. Sau đó, thay đổi requestAndPlayAds() để gọi ImaSdkFactory.createPodVodStreamRequest() nhằm tạo yêu cầu quảng cáo phân phát nhóm VOD. Cuối cùng, hãy yêu cầu luồng bằng AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Chỉnh sửa và đặt URL của luồng

Phân phát nhóm trong sự kiện phát trực tiếp

Gọi StreamManager.getStreamId() để nhận mã luồng. Sau đó, bạn cần chèn tính năng này vào STEAM_URL thay thế "[[STREAMID]]". Sau khi thực hiện thay đổi này, bạn có thể đặt URL của luồng mới bằng videoPlayer.setStreamUrl().

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

Phân phát nhóm luồng VOD

Gọi StreamManager.getStreamId() để nhận mã luồng. Sau đó, hãy yêu cầu URL luồng từ đối tác công nghệ video (VTP) của bạn. Sau đó, hãy gọi StreamManager.loadThirdPartyStream() để yêu cầu IMA tải URL luồng và mọi phụ đề do TVP trả về.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

Khi bật tính năng phân phát nhóm, IMA sẽ không thực hiện lệnh gọi đến VideoStreamPlayer.loadUrl(), vì vậy, bạn có thể xóa mọi lệnh gọi đến videoPlayer.setStreamUrl()videoPlayer.play() khỏi đó.

Vậy là xong! Bạn hiện đang yêu cầu và hiển thị quảng cáo trong luồng phân phát nhóm bằng SDK IMA Android DAI. Để xem các ví dụ khác về SDK Android đang được sử dụng, hãy tìm mẫu trên GitHub.