শুরু করুন

পূর্বশর্ত

কাস্টের জন্য PAL SDK সংহত করতে এবং পরীক্ষা করতে, আপনার নিম্নলিখিতগুলির প্রয়োজন:

যেহেতু আপনাকে শুধুমাত্র PAL SDK সংহত করার জন্য আপনার রিসিভার অ্যাপ আপডেট করতে হবে, তাই আপনি আপনার রিসিভার পরীক্ষা করার জন্য কাস্ট কমান্ড এবং কন্ট্রোল (CAC) টুল ব্যবহার করতে পারেন।

আপনি প্রথমে CAC টুলে আপনার ওয়েব রিসিভার অ্যাপ চালু করে , তারপরে যেকোনও লোডের অনুরোধ করে প্রতিটি ধাপের শেষে নমুনাটি চালাতে পারেন।

ননস জেনারেট করুন

একটি "nonce" হল একটি একক এনক্রিপ্ট করা স্ট্রিং যা PAL দ্বারা NonceManager মাধ্যমে তৈরি করা হয়। NonceManager NonceLoader এর loadNonceManager পদ্ধতি দ্বারা তৈরি করা হয়, একটি NonceRequest এ পাস করা সেটিংসের উপর ভিত্তি করে। একটি নন্স জেনারেট করতে PAL ব্যবহার করে এমন একটি নমুনা অ্যাপ দেখতে, GitHub থেকে কাস্ট উদাহরণটি ডাউনলোড করুন।

প্রতিটি নতুন স্ট্রিম অনুরোধের জন্য একটি নতুন নন্স প্রয়োজন৷ একই স্ট্রীমের মধ্যে একাধিক বিজ্ঞাপনের অনুরোধ একই নন্স ব্যবহার করতে পারে। PAL SDK ব্যবহার করে একটি ননস তৈরি করতে, প্রথমে একটি কাস্টমাইজড ওয়েব রিসিভার অ্যাপ তৈরি করুন এবং নিম্নলিখিত কোডটি যোগ করুন:

receiver.html

<!DOCTYPE html>
<html>
<head>
  <script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/pal/sdkloader/cast_pal.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <footer>
    <script src="js/receiver.js" type="module"></script>
  </footer>
</body>
</html>

<cast-media-player> উপাদানটি কাস্ট ওয়েব রিসিভার API দ্বারা প্রদত্ত অন্তর্নির্মিত প্লেয়ার UI প্রতিনিধিত্ব করে। স্ট্রিম প্রকারের উপর নির্ভর করে, ব্যবহৃত প্রকৃত প্লেয়ার পরিবর্তিত হতে পারে। আপনি Google Cast SDK রিলিজ নোটগুলিতে এই প্লেয়ারগুলির সঠিক সংস্করণগুলি খুঁজে পেতে পারেন৷

এর পরে, LOAD ইভেন্টগুলিকে আটকাতে নিম্নলিখিত কোডটি যুক্ত করুন এবং প্রতিবার রিসিভার একটি নতুন MediaInformation অবজেক্ট লোড করার সময় একটি ননস তৈরি করুন:

js/receiver.js

const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();

const consentSettings = new goog.cast.pal.ConsentSettings();
// For the correct usage of the allowStorage property, See
// developers.google.com/ad-manager/pal/cast/reference/js/ConsentSettings#allowStorage.
consentSettings.allowStorage = true;

// You need a nonce loader to request your stream's nonceManager. The
// nonceManager provides your nonce. You should reuse the same nonce loader for
// the entire lifecycle of the receiver.
const nonceLoader = new goog.cast.pal.NonceLoader(consentSettings);

// You need a reference to the NonceManager to track when an ad is shown or
// clicked.
let nonceManager;

/**
 * Sends a debug message to the CAF sender.
 *
 * @param {String} message - The message to send
 */
const log = (message) => {
  // Use CastDebugLogger to log a message to the sender. See
  // https://developers.google.com/cast/docs/debugging/cast_debug_logger.
}

/**
 * Stores the nonce manager in the outer scoped variable and retrieves a nonce,
 * so it can be used to build your ad request URL
 *
 * @param {NonceManager} loadedNonceManager - The loaded nonce manager
 */
const buildAdRequest = (loadedNonceManager) => {
  nonceManager = loadedNonceManager;

  const nonce = nonceManager.getNonce();
  log('received nonce:' + nonce);

  // TODO: Set this nonce as the value for the `givn` parameter of your ad
  // request URL. For example:
  // const adRequestURL = 'https://myadserver.com/ads?givn=' + nonce;
}

/**
 * Configures a new nonce request, then requests a nonce.
 *
 * @param {LoadRequestData} loadRequestData - the load request object,
 * which contains the MediaInformation object from the sender. See
 * developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.LoadRequestData
 * @return {(Promise<LoadRequestData>)} - A Promise to build an ad request.
 */
const handleLoadRequest = (loadRequestData) => {
  // Clear any old nonceManager before loading new media.
  nonceManager = null;

  // See developers.google.com/ad-manager/pal/cast/reference/js/NonceRequest
  // for details about each property. The NonceRequest parameters set here are
  // example parameters. You should set your parameters based on your own app
  // characteristics.
  const nonceRequest = new goog.cast.pal.NonceRequest();
  nonceRequest.adWillAutoPlay = true;
  // A URL describing the video stream.
  nonceRequest.descriptionUrl = 'https://example.com';
  nonceRequest.iconsSupported = true;
  nonceRequest.ppid = 'Sample PPID';
  nonceRequest.sessionId = 'Sample SID';
  nonceRequest.url = loadRequestData.media.contentUrl;
  // The height of the player in physical pixels.
  // For a fullscreen player on a 1080p screen, the video height would be 1080.
  nonceRequest.videoHeight = window.devicePixelRatio * window.screen.height;
  // The width of the player in physical pixels.
  // For a fullscreen player on a 1080p screen, the video width would be 1920.
  nonceRequest.videoWidth = window.devicePixelRatio * window.screen.width;

  return nonceLoader.loadNonceManager(nonceRequest)
    .then(buildAdRequest)
    .catch((e) => {
      log("Error: " + e.message);
    });
};

// Set up the event handler for the LOAD event type.
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.LOAD, handleLoadRequest);

castContext.start();

আপনার ডাইরেক্ট VAST কল (DVC) করার সময়, givn প্যারামিটারে এই নন্সটিকে মান হিসাবে সেট করুন। নন্স ইউআরএল নিরাপদ; আপনার এটি URL-এনকোড করার দরকার নেই।

ভিডিও মিথস্ক্রিয়া ট্র্যাক

একটি নন্স জেনারেট করার পাশাপাশি, PAL SDK-কে নির্দিষ্ট ভিডিও ইন্টারঅ্যাকশনের বিষয়ে অবহিত করা প্রয়োজন। কাস্ট রিসিভারের সাথে ইন্টারঅ্যাকশন ট্র্যাক করতে, আপনার কাস্টম রিসিভারে নিম্নলিখিত কোড যোগ করুন:

js/receiver.js

const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();

const consentSettings = new goog.cast.pal.ConsentSettings();
// For the correct usage of the allowStorage property, See
// developers.google.com/ad-manager/pal/cast/reference/js/ConsentSettings#allowStorage.
consentSettings.allowStorage = true;

// You need a nonce loader to request your stream's nonceManager. The
// nonceManager provides your nonce. You should reuse the same nonce loader for
// the entire lifecycle of the receiver.
const nonceLoader = new goog.cast.pal.NonceLoader(consentSettings);

// You need a reference to the NonceManager for sending ad events.
let nonceManager;

// Track playback status.
let playbackDidStart = false;

...

// Register the start of playback.
playerManager.addEventListener(cast.framework.events.EventType.PLAYING, () => {
  if (playbackDidStart) return;

  playbackDidStart = true;
  if (nonceManager) {
    log('Registered playback start');
    nonceManager.sendPlaybackStart();
  } else {
    log("Error: There is no nonce manager for this media.");
  }
});

// Register any interactions with the player.
const interactionEvents = [
  cast.framework.events.EventType.REQUEST_SEEK,
  cast.framework.events.EventType.REQUEST_STOP,
  cast.framework.events.EventType.REQUEST_PAUSE,
  cast.framework.events.EventType.REQUEST_PLAY,
  cast.framework.events.EventType.REQUEST_SKIP_AD,
  cast.framework.events.EventType.REQUEST_PLAY_AGAIN,
  cast.framework.events.EventType.REQUEST_PLAYBACK_RATE_CHANGE,
  cast.framework.events.EventType.REQUEST_VOLUME_CHANGE,
  cast.framework.events.EventType.REQUEST_USER_ACTION,
  cast.framework.events.EventType.REQUEST_FOCUS_STATE,
];
playerManager.addEventListener(interactionEvents, (interactionEvent) => {
  if (nonceManager) {
    log('Registered interaction: ' + interactionEvent);
    nonceManager.sendAdTouch(interactionEvent);
  } else {
    log("Error: There is no nonce manager for this media.");
  }
});

// Register the end of playback.
playerManager.addEventListener(cast.framework.events.EventType.MEDIA_FINISHED, () => {
  playbackDidStart = false;
  if (nonceManager) {
    log('Registered playback end');
    nonceManager.sendPlaybackEnd();
  } else {
    log("Error: There is no nonce manager for this media.");
  }
});

castContext.start();

(ঐচ্ছিক) তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের মাধ্যমে Google Ad Manager সংকেত পাঠান

অ্যাড ম্যানেজারের জন্য তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের অনুরোধ কনফিগার করুন। আপনি নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করার পরে, ননস প্যারামিটারটি PAL SDK থেকে, আপনার মধ্যস্থতাকারী সার্ভারের মাধ্যমে এবং তারপরে Google Ad Manager-এ প্রচারিত হয়। এটি Google Ad Manager-এর মাধ্যমে আরও ভাল নগদীকরণ সক্ষম করে৷

অ্যাড ম্যানেজারের কাছে সার্ভারের অনুরোধে ননস অন্তর্ভুক্ত করতে আপনার তৃতীয় পক্ষের বিজ্ঞাপন সার্ভার কনফিগার করুন। তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের ভিতরে কনফিগার করা একটি বিজ্ঞাপন ট্যাগের উদাহরণ এখানে দেওয়া হল:

'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'

আরও বিশদ বিবরণের জন্য, Google অ্যাড ম্যানেজার সার্ভার-সাইড বাস্তবায়ন নির্দেশিকা দেখুন।

বিজ্ঞাপন ম্যানেজার নন্স ভ্যালু সনাক্ত করতে givn= খোঁজে। তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের নিজস্ব কিছু ম্যাক্রো সমর্থন করতে হবে, যেমন %%custom_key_for_google_nonce%% , এবং এটিকে আপনার পূর্ববর্তী ধাপে দেওয়া ননস কোয়েরি প্যারামিটার দিয়ে প্রতিস্থাপন করতে হবে। এটি কীভাবে সম্পন্ন করা যায় সে সম্পর্কে আরও তথ্য তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের ডকুমেন্টেশনে পাওয়া উচিত।