LG-এর সাথে শুরু করা

এই গাইড LG webOS অ্যাপ্লিকেশনে PAL SDK যোগ করে, একটি নন্স অনুরোধ করে এবং বিজ্ঞাপন ইম্প্রেশন রেজিস্টার করে।

পূর্বশর্ত

এই গাইড শুরু করার আগে, একটি প্রাথমিক LG webOS অ্যাপ তৈরি করুন। অ্যাপ সেট-আপ করার জন্য আপনি webOS CLI বা webOS Studio ব্যবহার করতে পারেন। আরও বিবরণের জন্য, আপনার প্রথম অ্যাপ গাইড তৈরি করুন দেখুন

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

"নন্স" হল একটি এনক্রিপটেড স্ট্রিং যা PAL NonceLoader ব্যবহার করে তৈরি করে। PAL SDK-এর জন্য প্রতিটি নতুন স্ট্রিম অনুরোধের সাথে নতুন জেনারেট করা ননস থাকতে হবে। তবে, একই স্ট্রিমের মধ্যে একাধিক বিজ্ঞাপনের অনুরোধের জন্য ননস আবার ব্যবহার করা হতে পারে।

আপনি webOS CLI বা webOS Studio ব্যবহার করে কোনও অ্যাপ তৈরি করলে, এটি একটি HTML ফাইল তৈরি করে যার মধ্যে webOSTV.js ডিপেন্ডেন্সি থাকে। PAL-কে কাজ করার জন্য এই নির্ভরতা প্রয়োজন। আরও তথ্যের জন্য, webOSTV.js ডকুমেন্টেশন দেখুন।

আপনার index.html ফাইলে CTV PAL SDK-এর জন্য একটি ডিপেন্ডেন্সি যোগ করুন। webOSTV.js-এর জন্য স্ক্রিপ্ট ট্যাগের পরে স্ক্রিপ্ট ট্যাগ লোড করুন। উদাহরণ হিসেবে নিচের index.html ফাইল দেখুন।

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
  <meta name="description" content="LG app for PAL sdk"/>
  <title>LG app for PAL sdk</title>
  <link rel="stylesheet" href="style.css"/>
  <script src="path/to/webOSTVjs/webOSTV.js" charset="utf-8"></script>
  <script src="https://imasdk.googleapis.com/pal/sdkloader/pal_ctv.js"></script>
  <script src="app.js"></script>
</head>
<body>
  <header>
    <hgroup>
      <h1>LG app for PAL sdk</h1>
    </hgroup>
  </header>
  <div id="placeholder-video"></div>
</body>
</html>

তারপর, ননস জেনারেট করার জন্য একটি JavaScript ফাইল তৈরি করুন। এই ধাপে NonceLoader তৈরি করা, NonceRequest তৈরি করা এবং তারপরে NonceLoader.loadNonceManager() ব্যবহার করে ননস অনুরোধ করার PAL ওয়ার্কফ্লো অন্তর্ভুক্ত।

let videoElement;
let nonceLoader;
let managerPromise;
let nonceManager;
let playbackStarted = false;

/**
 * Initializes the PAL loader.
 */
function init() {
  videoElement = document.getElementById('placeholder-video');
  videoElement.addEventListener('mousedown', onVideoTouch);
  videoElement.addEventListener('touchstart', onVideoTouch);
  videoElement.addEventListener('play', function() {
    if (!playbackStarted) {
      sendPlaybackStart();
      playbackStarted = true;
    }
  });
  videoElement.addEventListener('ended', sendPlaybackEnd);
  videoElement.addEventListener('error', function() {
    // Handle video error.
    sendPlaybackEnd();
  });

  // PAL automatically determines whether limited ads apply based on the TCF
  // data found on the page. You can optionally use the `forceLimitedAds`
  // parameter to manually enable limited ads regardless of the TCF data.
  const consentSettings = new goog.pal.ConsentSettings();

  nonceLoader = new goog.ctv.pal.NonceLoader(consentSettings);

  generateNonce();
}

/**
 * Generates a nonce with sample arguments.
 *
 * The NonceRequest parameters set here are example parameters.
 * You should set your parameters based on your own app characteristics.
 */
function generateNonce() {
  const request = new goog.ctv.pal.NonceRequest();
  request.adWillAutoPlay = true;
  request.adWillPlayMuted = false;
  request.continuousPlayback = false;
  request.descriptionUrl = 'https://example.com';
  request.iconsSupported = true;
  request.playerType = 'Sample Player Type';
  request.playerVersion = '1.0';
  request.ppid = 'Sample PPID';
  request.sessionId = 'Sample SID';
  // Player support for VPAID 2.0, OMID 1.0, and SIMID 1.1
  request.supportedApiFrameworks = '2,7,9';
  request.url = 'https://developers.google.com/ad-manager/pal/ctv';
  request.videoHeight = 480;
  request.videoWidth = 640;

  managerPromise = nonceLoader.loadNonceManager(request);
  managerPromise
      .then(function(manager) {
        nonceManager = manager;
      })
      .catch((error) => {
        // Handle nonce generating error.
      });
}

window.addEventListener("load", function(event) {
  init();
});

বিজ্ঞাপন অনুরোধে আপনার ননস অ্যাটাচ করুন

জেনারেট করা ননস ব্যবহার করতে, আপনার বিজ্ঞাপনের অনুরোধ করার আগে, givn প্যারামিটার ও ননস ভ্যালু সহ আপনার বিজ্ঞাপন ট্যাগ যোগ করুন।

  /**
   * 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 https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
   */
  const DEFAULT_AD_TAG = "Your ad tag";

  ...

  managerPromise = nonceLoader.loadNonceManager(request);
  managerPromise
      .then(function(manager) {
        nonceManager = manager;
        
        // Append the nonce to the ad tag URL.
        makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
        
      })

আপনি Google-এর থেকে বিজ্ঞাপনের অনুরোধ করলে এবং তা রেন্ডার করলে, আপনাকে অবশ্যই AdChoices আইকন এবং ওভারলে রেন্ডার করতে হবে।

প্লেব্যাক ইভেন্ট ট্র্যাক করা

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

/**
 * Informs PAL that an ad click has occurred. How this function is
 * called will vary depending on your ad implementation.
 */
function sendAdClick() {
  if (nonceManager) {
    nonceManager.sendAdClick();
  }
}

/**
 * Handles the user touching on the video element, passing it to PAL.
 * @param {!TouchEvent|!MouseEvent} touchEvent
 */
function onVideoTouch(touchEvent) {
  if (nonceManager) {
    nonceManager.sendAdTouch(touchEvent);
  }
}

/** Informs PAL that playback has started. */
function sendPlaybackStart() {
  if (nonceManager) {
    nonceManager.sendPlaybackStart();
  }
}

/** Informs PAL that playback has ended. */
function sendPlaybackEnd() {
  if (nonceManager) {
    nonceManager.sendPlaybackEnd();
  }
}

আপনার প্রয়োগে, ভিডিও প্লেব্যাক সেশন শুরু হওয়ার পরে sendPlaybackStart একবার কল করা উচিত। আপনার ভিডিও প্লেব্যাক সেশন শেষ হয়ে গেলে sendPlaybackEnd-এ কল করতে হবে। sendAdClick কল করতে হবে যখনই দর্শক কোনও বিজ্ঞাপনে ক্লিক করবেন। প্লেয়ারের সাথে প্রতিটি টাচ ইন্টার‍্যাকশনে sendAdTouch কল করতে হবে ।

(ঐচ্ছিক) থার্ড-পার্টি বিজ্ঞাপন সার্ভারের মাধ্যমে Google Ad Manager সিগন্যাল পাঠানো

Ad Manager-এর জন্য থার্ড-পার্টি বিজ্ঞাপন সার্ভারের অনুরোধ কনফিগার করুন।

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

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

আরও বিবরণের জন্য, Google Ad Manager-এর সার্ভার-সাইড প্রয়োগ করা সংক্রান্ত নির্দেশিকা দেখুন।

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

ব্যস, এটুকুই যথেষ্ট! আপনার এখন PAL SDK থেকে, ইন্টারমিডিয়েট সার্ভারের মাধ্যমে এবং তারপরে Google Ad Manager-এ ননস প্যারামিটার প্রোপাগেট করা উচিত। এর ফলে Google Ad Manager-এর মাধ্যমে আরও ভালোভাবে মনিটাইজ করা যায়।