IMA DAI SDK দিয়ে শুরু করুন

IMA SDKগুলি আপনার ওয়েবসাইট এবং অ্যাপগুলিতে মাল্টিমিডিয়া বিজ্ঞাপনগুলিকে একীভূত করা সহজ করে তোলে৷ IMA SDK যেকোন VAST-সঙ্গী বিজ্ঞাপন সার্ভার থেকে বিজ্ঞাপনের অনুরোধ করতে পারে এবং আপনার অ্যাপে বিজ্ঞাপন প্লেব্যাক পরিচালনা করতে পারে। IMA DAI SDK-এর সাথে, অ্যাপগুলি বিজ্ঞাপন এবং বিষয়বস্তু ভিডিওর জন্য একটি স্ট্রিম অনুরোধ করে—হয় VOD বা লাইভ সামগ্রী। SDK তারপরে একটি সম্মিলিত ভিডিও স্ট্রিম ফেরত দেয়, যাতে আপনাকে আপনার অ্যাপের মধ্যে বিজ্ঞাপন এবং বিষয়বস্তু ভিডিওর মধ্যে স্যুইচিং পরিচালনা করতে হবে না।

আপনি আগ্রহী DAI সমাধান নির্বাচন করুন

পড পরিবেশন DAI

একটি সাধারণ ভিডিও প্লেয়ারের সাথে iOS-এর জন্য IMA DAI SDK ব্যবহার করে কীভাবে একটি DAI পড সার্ভিং লাইভ বা VOD স্ট্রিম চালাতে হয় তা এই নির্দেশিকাটি প্রদর্শন করে৷ আপনি যদি একটি সম্পূর্ণ নমুনা সহ অনুসরণ করতে চান, তাহলে পড পরিবেশন উদাহরণটি ডাউনলোড করুন।

IMA DAI পড সার্ভিং ওভারভিউ

iOS এর জন্য IMA DAI SDK ব্যবহার করে পড পরিবেশন বাস্তবায়নের দুটি প্রধান উপাদান জড়িত:

  • StreamRequest : একটি বস্তু যা Google এর বিজ্ঞাপন সার্ভারে একটি স্ট্রিম অনুরোধ সংজ্ঞায়িত করে। পড সার্ভিং সক্ষম করতে IMAPodStreamRequest বা IMAPodVODStreamRequest ব্যবহার করে তৈরি করতে হবে। উভয় পদ্ধতির একটি নেটওয়ার্ক কোড প্রয়োজন এবং IMAPodStreamRequest জন্য একটি কাস্টম সম্পদ কী প্রয়োজন। একটি API কী ঐচ্ছিক।

  • IMAStreamManager : একটি বস্তু যা ভিডিও স্ট্রীম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ফায়ারিং ট্র্যাকিং পিং এবং প্রকাশকের কাছে স্ট্রিম ইভেন্ট ফরওয়ার্ড করা।

পূর্বশর্ত

আপনি শুরু করার আগে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • Xcode 13 বা তার পরে।
  • CocoaPods (পছন্দের), সুইফট প্যাকেজ ম্যানেজার, অথবা iOS-এর জন্য IMA DAI SDK- এর ডাউনলোড করা কপি।
  • DAI বিজ্ঞাপনের সাথে ভিডিও স্ট্রিম চালানোর জন্য IMA DAI SDK-এর সাথে একটি iOS অ্যাপ ইতিমধ্যেই সেট আপ করা হয়েছে। যদি আপনার কাছে এমন কোনো অ্যাপ না থাকে, তাহলে আমরা iOS DAI BasicExampleকে শুরুর পয়েন্ট হিসেবে ব্যবহার করার পরামর্শ দিই। BasicExample এই নির্দেশিকায় উল্লেখিত কোডবেস আছে। IMA DAI SDK কীভাবে বাস্তবায়ন করবেন সে সম্পর্কে আরও তথ্যের জন্য, দ্রুত শুরু নির্দেশিকা দেখুন।

আপনার পড পরিবেশন ভেরিয়েবল সেট আপ করুন

পড পরিবেশনের জন্য প্রয়োজনীয় সমস্ত পরিবর্তনগুলি সুইফটে ViewController.swift বা Objective-C-তে ViewController.m- এ করা হয়। এই গাইডের স্নিপেটগুলি সুইফট ভাষা ব্যবহার করার জন্য ডিফল্ট। প্রথম ধাপ হল ধ্রুবক ভেরিয়েবল আপডেট করা।

এখানে অ্যাড পড স্ট্রিম অনুরোধের ধ্রুবক যোগ করা হয়েছে:

  • STREAM_URL ( শুধুমাত্র লাইভস্ট্রিমগুলির জন্য ব্যবহৃত হয় ): আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা তৃতীয় পক্ষের অংশীদার পড পরিবেশন ব্যবহার করে প্রদত্ত ভিডিও স্ট্রিম URL৷ আপনি একটি অনুরোধ করার আগে, আপনাকে IMA DAI SDK দ্বারা প্রদত্ত স্ট্রিম আইডি ঢোকাতে হবে। এই ক্ষেত্রে, স্ট্রীম URL-এ একটি স্থানধারক অন্তর্ভুক্ত করা হয়, "[[STREAMID]]" , যা অনুরোধ করার আগে স্ট্রিম আইডি দিয়ে প্রতিস্থাপিত হয়।
  • NETWORK_CODE : আপনার Ad Manager 360 অ্যাকাউন্টের নেটওয়ার্ক কোড।
  • CUSTOM_ASSET_KEY ( শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহৃত হয় ): কাস্টম অ্যাসেট কী যা অ্যাড ম্যানেজার 360-এ আপনার পড সার্ভিং ইভেন্টকে শনাক্ত করে৷ এটি আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা 3য় পক্ষের পড পরিবেশনকারী অংশীদার দ্বারা তৈরি করা যেতে পারে৷
  • API_KEY ( শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহৃত হয় ): একটি ঐচ্ছিক API কী যা IMA DAI SDK থেকে একটি স্ট্রিম আইডি পুনরুদ্ধার করতে প্রয়োজন হতে পারে।

নিম্নলিখিতগুলির সাথে মেলে উদাহরণের পরিবর্তনশীল বিভাগটি পরিবর্তন করুন:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "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]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

একটি লাইভ বা VOD পড স্ট্রিম অনুরোধ তৈরি করুন

লাইভ স্ট্রিম পড পরিবেশন

IMAPodStreamRequest ইনস্ট্যান্টিয়েট করে একটি লাইভ পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি পরিবর্তন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

IMAPodVODStreamRequest ইনস্ট্যান্টিয়েট করে একটি VOD পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি পরিবর্তন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

স্ট্রীম URL সম্পাদনা করুন এবং সেট করুন৷

লাইভ স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতি পরিবর্তন করুন। তারপর "[[STREAMID]]" প্রতিস্থাপন করে STREAM_URL এ স্ট্রিম আইডি ঢোকান। একবার এই পরিবর্তন করা হয়ে গেলে, নতুন স্ট্রীম URL videoDisplay.loadStream() ব্যবহার করে সেট করা যেতে পারে।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতি পরিবর্তন করুন। তারপর, আপনার ভিডিও প্রযুক্তি অংশীদার (VTP) থেকে একটি স্ট্রিম URL এর অনুরোধ করুন। তারপর IMAStreamManager.loadThirdPartyStream() এ কল করুন যাতে IMA স্ট্রিম ইউআরএল এবং আপনার TVP দ্বারা ফেরত দেওয়া যেকোনো সাবটাইটেল লোড করতে পারে।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

তাই তো! আপনি এখন অনুরোধ করছেন এবং iOS-এর জন্য IMA DAI SDK-এর সাথে একটি পড সার্ভিং স্ট্রীমে বিজ্ঞাপন প্রদর্শন করছেন। IMA DAI SDK ব্যবহার করার অন্যান্য উদাহরণ দেখতে, GitHub-এর নমুনাগুলি দেখুন।

,

IMA SDKগুলি আপনার ওয়েবসাইট এবং অ্যাপগুলিতে মাল্টিমিডিয়া বিজ্ঞাপনগুলিকে একীভূত করা সহজ করে তোলে৷ IMA SDK যেকোন VAST-সঙ্গী বিজ্ঞাপন সার্ভার থেকে বিজ্ঞাপনের অনুরোধ করতে পারে এবং আপনার অ্যাপে বিজ্ঞাপন প্লেব্যাক পরিচালনা করতে পারে। IMA DAI SDK-এর সাথে, অ্যাপগুলি বিজ্ঞাপন এবং বিষয়বস্তু ভিডিওর জন্য একটি স্ট্রিম অনুরোধ করে—হয় VOD বা লাইভ সামগ্রী। SDK তারপরে একটি সম্মিলিত ভিডিও স্ট্রিম ফেরত দেয়, যাতে আপনাকে আপনার অ্যাপের মধ্যে বিজ্ঞাপন এবং বিষয়বস্তু ভিডিওর মধ্যে স্যুইচিং পরিচালনা করতে হবে না।

আপনি আগ্রহী DAI সমাধান নির্বাচন করুন

পড পরিবেশন DAI

একটি সাধারণ ভিডিও প্লেয়ারের সাথে iOS-এর জন্য IMA DAI SDK ব্যবহার করে কীভাবে একটি DAI পড সার্ভিং লাইভ বা VOD স্ট্রিম চালাতে হয় তা এই নির্দেশিকাটি প্রদর্শন করে৷ আপনি যদি একটি সম্পূর্ণ নমুনা সহ অনুসরণ করতে চান, তাহলে পড পরিবেশন উদাহরণটি ডাউনলোড করুন।

IMA DAI পড সার্ভিং ওভারভিউ

iOS এর জন্য IMA DAI SDK ব্যবহার করে পড পরিবেশন বাস্তবায়নের দুটি প্রধান উপাদান জড়িত:

  • StreamRequest : একটি বস্তু যা Google এর বিজ্ঞাপন সার্ভারে একটি স্ট্রিম অনুরোধ সংজ্ঞায়িত করে। পড সার্ভিং সক্ষম করতে IMAPodStreamRequest বা IMAPodVODStreamRequest ব্যবহার করে তৈরি করতে হবে। উভয় পদ্ধতির একটি নেটওয়ার্ক কোড প্রয়োজন এবং IMAPodStreamRequest জন্য একটি কাস্টম সম্পদ কী প্রয়োজন। একটি API কী ঐচ্ছিক।

  • IMAStreamManager : একটি বস্তু যা ভিডিও স্ট্রীম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ফায়ারিং ট্র্যাকিং পিং এবং প্রকাশকের কাছে স্ট্রিম ইভেন্ট ফরওয়ার্ড করা।

পূর্বশর্ত

আপনি শুরু করার আগে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • Xcode 13 বা তার পরে।
  • CocoaPods (পছন্দের), সুইফট প্যাকেজ ম্যানেজার, অথবা iOS-এর জন্য IMA DAI SDK- এর ডাউনলোড করা কপি।
  • DAI বিজ্ঞাপনের সাথে ভিডিও স্ট্রিম চালানোর জন্য IMA DAI SDK-এর সাথে একটি iOS অ্যাপ ইতিমধ্যেই সেট আপ করা হয়েছে। যদি আপনার কাছে এমন কোনো অ্যাপ না থাকে, তাহলে আমরা iOS DAI BasicExampleকে শুরুর পয়েন্ট হিসেবে ব্যবহার করার পরামর্শ দিই। BasicExample এই নির্দেশিকায় উল্লেখিত কোডবেস আছে। IMA DAI SDK কীভাবে বাস্তবায়ন করবেন সে সম্পর্কে আরও তথ্যের জন্য, দ্রুত শুরু নির্দেশিকা দেখুন।

আপনার পড পরিবেশন ভেরিয়েবল সেট আপ করুন

পড পরিবেশনের জন্য প্রয়োজনীয় সমস্ত পরিবর্তনগুলি সুইফটে ViewController.swift বা Objective-C-তে ViewController.m- এ করা হয়। এই গাইডের স্নিপেটগুলি সুইফট ভাষা ব্যবহার করার জন্য ডিফল্ট। প্রথম ধাপ হল ধ্রুবক ভেরিয়েবল আপডেট করা।

এখানে অ্যাড পড স্ট্রিম অনুরোধের ধ্রুবক যোগ করা হয়েছে:

  • STREAM_URL ( শুধুমাত্র লাইভস্ট্রিমগুলির জন্য ব্যবহৃত হয় ): আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা তৃতীয় পক্ষের অংশীদার পড পরিবেশন ব্যবহার করে প্রদত্ত ভিডিও স্ট্রিম URL৷ আপনি একটি অনুরোধ করার আগে, আপনাকে IMA DAI SDK দ্বারা প্রদত্ত স্ট্রিম আইডি ঢোকাতে হবে। এই ক্ষেত্রে, স্ট্রীম URL-এ একটি স্থানধারক অন্তর্ভুক্ত করা হয়, "[[STREAMID]]" , যা অনুরোধ করার আগে স্ট্রিম আইডি দিয়ে প্রতিস্থাপিত হয়।
  • NETWORK_CODE : আপনার Ad Manager 360 অ্যাকাউন্টের নেটওয়ার্ক কোড।
  • CUSTOM_ASSET_KEY ( শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহৃত হয় ): কাস্টম অ্যাসেট কী যা অ্যাড ম্যানেজার 360-এ আপনার পড সার্ভিং ইভেন্টকে শনাক্ত করে৷ এটি আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা 3য় পক্ষের পড পরিবেশনকারী অংশীদার দ্বারা তৈরি করা যেতে পারে৷
  • API_KEY ( শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহৃত হয় ): একটি ঐচ্ছিক API কী যা IMA DAI SDK থেকে একটি স্ট্রিম আইডি পুনরুদ্ধার করতে প্রয়োজন হতে পারে।

নিম্নলিখিতগুলির সাথে মেলে উদাহরণের পরিবর্তনশীল বিভাগটি পরিবর্তন করুন:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "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]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

একটি লাইভ বা VOD পড স্ট্রিম অনুরোধ তৈরি করুন

লাইভ স্ট্রিম পড পরিবেশন

IMAPodStreamRequest ইনস্ট্যান্টিয়েট করে একটি লাইভ পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি পরিবর্তন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

IMAPodVODStreamRequest ইনস্ট্যান্টিয়েট করে একটি VOD পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি পরিবর্তন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

স্ট্রীম URL সম্পাদনা করুন এবং সেট করুন৷

লাইভ স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতি পরিবর্তন করুন। তারপর "[[STREAMID]]" প্রতিস্থাপন করে STREAM_URL এ স্ট্রিম আইডি ঢোকান। একবার এই পরিবর্তন করা হয়ে গেলে, নতুন স্ট্রীম URL videoDisplay.loadStream() ব্যবহার করে সেট করা যেতে পারে।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতি পরিবর্তন করুন। তারপর, আপনার ভিডিও প্রযুক্তি অংশীদার (VTP) থেকে একটি স্ট্রিম URL এর অনুরোধ করুন। তারপর IMAStreamManager.loadThirdPartyStream() এ কল করুন যাতে IMA স্ট্রিম ইউআরএল এবং আপনার TVP দ্বারা ফেরত দেওয়া যেকোনো সাবটাইটেল লোড করতে পারে।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

তাই তো! আপনি এখন অনুরোধ করছেন এবং iOS-এর জন্য IMA DAI SDK-এর সাথে একটি পড সার্ভিং স্ট্রীমে বিজ্ঞাপন প্রদর্শন করছেন। IMA DAI SDK ব্যবহার করার অন্যান্য উদাহরণ দেখতে, GitHub-এর নমুনাগুলি দেখুন।

,

আইএমএ এসডিকে আপনার ওয়েবসাইট এবং অ্যাপ্লিকেশনগুলিতে মাল্টিমিডিয়া বিজ্ঞাপনগুলি সংহত করা সহজ করে তোলে। আইএমএ এসডিকে কোনও বিশাল-কমপ্লায়েন্ট এডি সার্ভার থেকে বিজ্ঞাপনগুলির জন্য অনুরোধ করতে পারে এবং আপনার অ্যাপ্লিকেশনগুলিতে বিজ্ঞাপন প্লেব্যাক পরিচালনা করতে পারে। আইএমএ ডাই এসডিকেএস সহ, অ্যাপ্লিকেশনগুলি বিজ্ঞাপন এবং সামগ্রী ভিডিওর জন্য একটি স্ট্রিম অনুরোধ করে - হয় ভিওডি বা লাইভ সামগ্রী। এরপরে এসডিকে একটি সম্মিলিত ভিডিও স্ট্রিমটি ফেরত দেয়, যাতে আপনাকে আপনার অ্যাপের মধ্যে বিজ্ঞাপন এবং সামগ্রী ভিডিওর মধ্যে স্যুইচিং পরিচালনা করতে না হয়।

আপনার আগ্রহী DAI সমাধানটি নির্বাচন করুন

পোড পরিবেশন ডাই

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

আইএমএ ডাই পড পরিবেশন ওভারভিউ

আইওএসের জন্য আইএমএ ডাই এসডিকে ব্যবহার করে পিওড পরিবেশন বাস্তবায়নে দুটি প্রধান উপাদান জড়িত:

  • StreamRequest : এমন একটি বস্তু যা গুগলের বিজ্ঞাপন সার্ভারগুলিতে একটি স্ট্রিম অনুরোধকে সংজ্ঞায়িত করে। পিওড পরিবেশন সক্ষম করতে IMAPodStreamRequest বা IMAPodVODStreamRequest ব্যবহার করে তৈরি করতে হবে। উভয় পদ্ধতির জন্য একটি নেটওয়ার্ক কোড প্রয়োজন এবং IMAPodStreamRequest এছাড়াও একটি কাস্টম সম্পদ কী প্রয়োজন। একটি এপিআই কী al চ্ছিক।

  • IMAStreamManager : ভিডিও স্ট্রিম এবং আইএমএ ডাই এসডিকে -র মধ্যে যোগাযোগ পরিচালনা করে এমন একটি বস্তু, যেমন ট্র্যাকিং পিংস ফায়ারিং এবং প্রকাশকের কাছে স্ট্রিম ইভেন্টগুলি ফরোয়ার্ড করা।

পূর্বশর্ত

আপনি শুরু করার আগে আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • এক্সকোড 13 বা তার পরে।
  • কোকোপডস (পছন্দসই), সুইফট প্যাকেজ ম্যানেজার, বা আইওএসের জন্য আইএমএ ডাই এসডিকে ডাউনলোড করা অনুলিপি।
  • একটি আইওএস অ্যাপ্লিকেশন ইতিমধ্যে আইএমএ ডাই এসডিকে দিয়ে সেট আপ করেছে ডাই বিজ্ঞাপনগুলির সাথে ভিডিও স্ট্রিম খেলতে। আপনার যদি ইতিমধ্যে এই জাতীয় অ্যাপ্লিকেশন না থাকে তবে আমরা আইওএস ডাই বেসিসেক্সামালকে একটি প্রারম্ভিক পয়েন্ট হিসাবে ব্যবহার করার পরামর্শ দিই। বেসিসেক্সামালটিতে এই গাইডটিতে কোডবেস রেফারেন্স রয়েছে। আইএমএ ডাই এসডিকে কীভাবে বাস্তবায়ন করবেন সে সম্পর্কে আরও তথ্যের জন্য, দ্রুত প্রারম্ভিক গাইডটি দেখুন।

আপনার পোড পরিবেশন ভেরিয়েবল সেট আপ করুন

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

এখানে বিজ্ঞাপন পড স্ট্রিম অনুরোধের ধ্রুবকগুলি যুক্ত করার জন্য রয়েছে:

  • STREAM_URL ( কেবলমাত্র লাইভস্ট্রিমগুলির জন্য ব্যবহৃত ): আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা তৃতীয় পক্ষের অংশীদার দ্বারা পিওড পরিবেশন ব্যবহার করে সরবরাহ করা ভিডিও স্ট্রিম ইউআরএল। আপনি কোনও অনুরোধ করার আগে আইএমএ ডাই এসডিকে প্রদত্ত স্ট্রিম আইডি সন্নিবেশ করানো উচিত। এই ক্ষেত্রে, স্ট্রিম ইউআরএলটিতে একটি অনুরোধ করার আগে স্ট্রিম আইডি দিয়ে প্রতিস্থাপন করা হয়েছে এমন একটি স্থানধারক, "[[STREAMID]]" অন্তর্ভুক্ত রয়েছে।
  • NETWORK_CODE : আপনার বিজ্ঞাপন পরিচালক 360 অ্যাকাউন্টের জন্য নেটওয়ার্ক কোড।
  • CUSTOM_ASSET_KEY ( কেবলমাত্র লাইভস্ট্রিমের জন্য ব্যবহৃত ): কাস্টম অ্যাসেট কী যা আপনার পিওডি পরিবেশন ইভেন্টটি বিজ্ঞাপন ম্যানেজার 360 এ সনাক্ত করে This এটি আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা তৃতীয় পক্ষের পিওডি পরিবেশনকারী অংশীদার দ্বারা তৈরি করা যেতে পারে।
  • API_KEY ( কেবল লাইভস্ট্রিমগুলির জন্য ব্যবহৃত ): একটি al চ্ছিক এপিআই কী যা আইএমএ ডাই এসডিকে থেকে একটি স্ট্রিম আইডি পুনরুদ্ধার করতে প্রয়োজন হতে পারে।

নিম্নলিখিতগুলির সাথে মেলে উদাহরণের পরিবর্তনশীল বিভাগটি পরিবর্তন করুন:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "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]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

একটি লাইভ বা ভিওডি পোড স্ট্রিম অনুরোধ তৈরি করুন

লাইভ স্ট্রিম পড পরিবেশন

IMAPodStreamRequest ইনস্ট্যান্ট করে একটি লাইভ পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি সংশোধন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

IMAPodVODStreamRequest ইনস্ট্যান্ট করে একটি ভিওডি পিওডি স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি সংশোধন করুন।

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

সম্পাদনা করুন এবং স্ট্রিম ইউআরএল সেট করুন

লাইভ স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতিগুলি সংশোধন করুন। তারপরে STREAM_URL -এ স্ট্রিম আইডি sert োকান, "[[STREAMID]]" প্রতিস্থাপন করে। একবার এই পরিবর্তনটি হয়ে গেলে, নতুন স্ট্রিম ইউআরএলটি videoDisplay.loadStream() ব্যবহার করে সেট করা যেতে পারে।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

ভিওডি স্ট্রিম পড পরিবেশন

স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতিগুলি সংশোধন করুন। তারপরে, আপনার ভিডিও প্রযুক্তি অংশীদার (ভিটিপি) থেকে একটি স্ট্রিম ইউআরএল অনুরোধ করুন। তারপরে আইএমএর স্ট্রিম ইউআরএল এবং আপনার টিভিপি দ্বারা ফিরে আসা কোনও সাবটাইটেলগুলি লোড করতে IMAStreamManager.loadThirdPartyStream() কল করুন।

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

তাই তো! আপনি এখন আইওএসের জন্য আইএমএ ডাই এসডিকে সহ একটি পোড পরিবেশন স্ট্রিমে বিজ্ঞাপনগুলির জন্য অনুরোধ করছেন এবং প্রদর্শন করছেন। আইএমএ ডাই এসডিকে ব্যবহারের অন্যান্য উদাহরণগুলি দেখতে গিটহাবের নমুনাগুলি দেখুন।

,

আইএমএ এসডিকে আপনার ওয়েবসাইট এবং অ্যাপ্লিকেশনগুলিতে মাল্টিমিডিয়া বিজ্ঞাপনগুলি সংহত করা সহজ করে তোলে। আইএমএ এসডিকে কোনও বিশাল-কমপ্লায়েন্ট এডি সার্ভার থেকে বিজ্ঞাপনগুলির জন্য অনুরোধ করতে পারে এবং আপনার অ্যাপ্লিকেশনগুলিতে বিজ্ঞাপন প্লেব্যাক পরিচালনা করতে পারে। আইএমএ ডাই এসডিকেএস সহ, অ্যাপ্লিকেশনগুলি বিজ্ঞাপন এবং সামগ্রী ভিডিওর জন্য একটি স্ট্রিম অনুরোধ করে - হয় ভিওডি বা লাইভ সামগ্রী। এরপরে এসডিকে একটি সম্মিলিত ভিডিও স্ট্রিমটি ফেরত দেয়, যাতে আপনাকে আপনার অ্যাপের মধ্যে বিজ্ঞাপন এবং সামগ্রী ভিডিওর মধ্যে স্যুইচিং পরিচালনা করতে না হয়।

আপনার আগ্রহী DAI সমাধানটি নির্বাচন করুন

Pod serving DAI

This guide demonstrates how to play a DAI Pod Serving live or VOD stream, using the IMA DAI SDK for iOS with a simple video player. If you would like to follow along with a completed sample, download the pod serving example .

IMA DAI Pod Serving overview

Implementing pod serving using the IMA DAI SDK for iOS involves two main components:

  • StreamRequest : An object that defines a stream request to Google's advertising servers. Must be created using either IMAPodStreamRequest or IMAPodVODStreamRequest to enable pod serving. Both methods require a Network Code and IMAPodStreamRequest also needs a Custom Asset Key . An API Key is optional.

  • IMAStreamManager : An object that handles communication between the video stream and the IMA DAI SDK, such as firing tracking pings and forwarding stream events to the publisher.

পূর্বশর্ত

Before you begin, you need the following:

  • Xcode 13 or later.
  • CocoaPods (preferred), Swift Package Manager, or a downloaded copy of the IMA DAI SDK for iOS .
  • An iOS app already set up with the IMA DAI SDK to play video streams with DAI ads. If you don't already have such an app, we recommend using the iOS DAI BasicExample as a starting point. The BasicExample has the codebase referenced in this guide. For more information about how to implement the IMA DAI SDK, see the Quick Start Guide .

Set up your pod serving variables

All changes needed for pod serving are done in ViewController.swift in swift or ViewController.m in Objective-C. The snippets in this guide default to using the Swift language. The first step is to update the constant variables.

Here are the ad pod stream request constants to be added:

  • STREAM_URL ( Only used for livestreams ): The video stream URL provided by your manifest manipulator or third-party partner using pod serving. It should require you to insert the stream ID provided by the IMA DAI SDK, before you make a request. In this case, the stream URL includes a placeholder, "[[STREAMID]]" , which is replaced with the stream ID, before making a request.
  • NETWORK_CODE : The network code for your Ad Manager 360 account.
  • CUSTOM_ASSET_KEY ( Only used for livestreams ): The custom asset key that identifies your pod serving event in Ad Manager 360. This can be created by your manifest manipulator or 3rd party pod serving partner.
  • API_KEY ( Only used for livestreams ): An optional API key that can be required to retrieve a stream ID from the IMA DAI SDK.

Change the example's variable section to match the following:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "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]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

Create either a live or VOD pod stream request

Live stream pod serving

Modify the requestStream method to create a live Pod Stream request by instantiating IMAPodStreamRequest .

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

VOD stream pod serving

Modify the requestStream method to create a VOD Pod Stream request by instantiating IMAPodVODStreamRequest .

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

Edit and set the stream URL

Live stream pod serving

Modify the IMAAdsLoaderDelegate methods, using streamManager.streamId to get the stream ID. Then insert the stream ID into the STREAM_URL , replacing "[[STREAMID]]" . Once this change has been made, the new stream URL can be set using videoDisplay.loadStream() .

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

VOD stream pod serving

Modify the IMAAdsLoaderDelegate methods, using streamManager.streamId to get the stream ID. Then, request a stream URL from your video technology partner (VTP). Then call IMAStreamManager.loadThirdPartyStream() to have IMA load the stream URL and any subtitles returned by your TVP.

  ...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

তাই তো! You're now requesting and displaying ads in a pod serving stream with the IMA DAI SDK for iOS. To see other examples of the IMA DAI SDK being used, look to the samples on GitHub .