SDK IMA 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 nào tuân thủ VAST 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, ứng dụng sẽ tạo một yêu cầu truyền phát cho quảng cáo và video 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 quảng cáo và video nội dung trong ứng dụng.
Chọn giải pháp DAI mà bạn quan tâm
Phân phát nhóm DAI
SDK IMA 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 nào tuân thủ VAST 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, ứng dụng sẽ tạo một yêu cầu truyền phát cho quảng cáo và video 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 quảng cáo và video nội dung trong ứng dụng.
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 với trình phát video để phát luồng trực tiếp và VOD. Để xem hoặc làm theo một ví dụ tích hợp mẫu đã hoàn tất, hãy tải Ví dụ về việc phân phát Pod xuống.
Tổng quan về cơ chế Phân phát nhóm DAI của IMA
StreamRequest
: Một đối tượng xác định yêu cầu truyền trực tuyến đến máy chủ quảng cáo của Google. Phải được tạo bằngImaSdkFactory.createPodStreamRequest()
hoặcImaSdkFactory.createPodVodStreamRequest()
để bật tính năng Phân phát nhóm. Các phương thức này yêu cầu Mã mạng vàcreatePodStreamRequest
cũng yêu cầu Khoá thành phần tuỳ chỉnh và 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 sự kiện luồng đến nhà xuất bản.
Điều kiện tiên quyết
Một ứng dụng Android đã được thiết lập bằng SDK IMA DAI để phát luồng video có quảng cáo DAI. Nếu chưa có ứng dụng như vậy, bạn nên sử dụng Android DAI BasicExample làm điểm xuất phát. BasicExample có cơ sở mã được tham chiếu trong hướng dẫn này.
Điều quan trọng là ứng dụng của bạn phải gửi các sự kiện ID3 bằng cách sử dụng
VideoStreamPlayerCallback.onUserTextReceived()
để IMA DAI hoạt động. Xem ví dụ về đoạn mã DAI đầy đủ cho dịch vụ.
Thiết lập biến Phân phát nhóm
Tất cả thay đổi cần thiết cho tính năng Phân phát nhóm đều được thực hiện trong SampleAdsWrapper.java. Bước đầu tiên là cập nhật các biến hằng số.
Sau đây là các hằng số yêu cầu luồng nhóm quảng cáo cần thêm:
STREAM_URL
: Chỉ dùng cho sự kiện phát trực tiếp – URL của luồng video do trình điều khiển tệp kê khai hoặc đối tác bên thứ ba cung cấp bằng tính năng Phân phát nhóm. Bạn sẽ phải chèn mã luồng do SDK IMA DAI cung cấp trước khi tạo yêu cầu. Trong trường hợp này, URL luồng bao gồm một phần giữ chỗ,"[[STREAMID]]"
, được thay thế bằng mã luồng trước khi tạo yêu cầu.NETWORK_CODE
: Mã mạng cho tài khoản Ad Manager 360.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 trong Ad Manager 360. Tệp này có thể do trình điều khiển tệp kê khai hoặc đối tác Phân phát nhóm bên thứ ba tạo.API_KEY
: Chỉ dùng cho sự kiện phát trực tiếp – 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, nhưng đối với tính năng Phân phát nhóm, ứng dụng này được thiết lập để chỉ phát một luồng. Thay đổi phần biến của ví dụ để khớp với nội dung 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 phát trực tiếp hoặc VOD theo nhóm để bật tính năng Phân phát theo nhóm
Phân phát nhóm phát trực tiếp
Xoá phương thức buildStreamRequest()
đã được dùng để chuyển đổi giữa việc tạo nhiều loại luồng. Sau đó, hãy thay đổi requestAndPlayAds()
để gọi ImaSdkFactory.createPodStreamRequest()
nhằm tạo yêu cầu quảng cáo phân phát nhóm quảng cáo 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 theo nhóm luồng VOD
Xoá phương thức buildStreamRequest()
đã được dùng để chuyển đổi giữa việc tạo nhiều loại luồng. Sau đó, hãy thay đổi requestAndPlayAds()
để gọi ImaSdkFactory.createPodVodStreamRequest()
nhằm tạo yêu cầu phân phát quảng cáo trong 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 luồng
Phân phát nhóm phát trực tiếp
Gọi StreamManager.getStreamId()
để lấy mã luồng. Sau đó, bạn cần chèn mã 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 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 theo nhóm luồng VOD
Gọi StreamManager.getStreamId()
để lấy mã luồng. Sau đó, hãy yêu cầu một URL truyền phát từ đối tác công nghệ video (VTP). Sau đó, hãy gọi StreamManager.loadThirdPartyStream()
để 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 tính năng Phân phát nhóm được bật, IMA sẽ không thực hiện lệnh gọi đến VideoStreamPlayer.loadUrl()
. Vì vậy, bạn có thể xoá mọi lệnh gọi đến videoPlayer.setStreamUrl()
và videoPlayer.play()
khỏi đó.
Dọn dẹp các thành phần IMA DAI
Khi đã hoàn tất việc yêu cầu và hiển thị quảng cáo trong luồng Phân phát nhóm bằng SDK DAI IMA, bạn nên dọn dẹp mọi tài nguyên sau khi phiên Phân phát nhóm hoàn tất. Gọi StreamManager.destroy()
để dừng phát trực tuyến, dừng tất cả hoạt động theo dõi quảng cáo và giải phóng tất cả thành phần phát trực tuyến đã tải.
Để xem các ví dụ khác về việc sử dụng SDK Android, hãy xem các mẫu trên GitHub.