পুরস্কৃত বিজ্ঞাপন

পুরস্কৃত বিজ্ঞাপন হল সেই বিজ্ঞাপন যা ব্যবহারকারীদের অ্যাপ-মধ্যস্থ পুরস্কারের বিনিময়ে ইন্টারঅ্যাক্ট করার বিকল্প থাকে। এই নির্দেশিকা আপনাকে দেখায় কিভাবে বিজ্ঞাপন পরিচালক থেকে পুরস্কৃত বিজ্ঞাপনগুলিকে একটি iOS অ্যাপে একত্রিত করতে হয়৷

পূর্বশর্ত

সর্বদা পরীক্ষার বিজ্ঞাপন দিয়ে পরীক্ষা করুন

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

পরীক্ষার বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল iOS পুরস্কৃত বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:

/21775744923/example/rewarded

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

মোবাইল বিজ্ঞাপন SDK-এর পরীক্ষার বিজ্ঞাপনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পরীক্ষা বিজ্ঞাপনগুলি দেখুন।

বাস্তবায়ন

পুরস্কৃত বিজ্ঞাপনগুলিকে সংহত করার প্রাথমিক পদক্ষেপগুলি নিম্নরূপ:

  • একটি বিজ্ঞাপন লোড করুন
  • [ঐচ্ছিক] SSV কলব্যাক যাচাই করুন
  • কলব্যাকের জন্য নিবন্ধন করুন
  • বিজ্ঞাপন প্রদর্শন করুন এবং পুরস্কার ইভেন্ট পরিচালনা করুন

একটি বিজ্ঞাপন লোড করুন

GADRewardedAd ক্লাসে load(adUnitID:request) পদ্ধতি ব্যবহার করে একটি বিজ্ঞাপন লোড করা হয়।

সুইফট

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() async {
    do {
      rewardedAd = try await GADRewardedAd.load(
        withAdUnitID: "/21775744923/example/rewarded", request: GAMRequest())
    } catch {
      print("Rewarded ad failed to load with error: \(error.localizedDescription)")
    }
  }
}

সুইফটইউআই

import GoogleMobileAds

class RewardedViewModel: NSObject, ObservableObject, GADFullScreenContentDelegate {
  @Published var coins = 0
  private var rewardedAd: GADRewardedAd?

  func loadAd() async {
    do {
      rewardedAd = try await GADRewardedAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
      rewardedAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load rewarded ad with error: \(error.localizedDescription)")
    }
  }

উদ্দেশ্য-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd
      loadWithAdUnitID:@"/21775744923/example/rewarded"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
      }];
}

[ঐচ্ছিক] সার্ভার-সাইড ভেরিফিকেশন (SSV) কলব্যাক যাচাই করুন

যে অ্যাপগুলির সার্ভার-সাইড যাচাইকরণ কলব্যাকে অতিরিক্ত ডেটার প্রয়োজন হয় তাদের পুরস্কৃত বিজ্ঞাপনগুলির কাস্টম ডেটা বৈশিষ্ট্য ব্যবহার করা উচিত। পুরস্কৃত বিজ্ঞাপন অবজেক্টে সেট করা যেকোনো স্ট্রিং মান SSV কলব্যাকের custom_data ক্যোয়ারী প্যারামিটারে পাস করা হয়। যদি কোনো কাস্টম ডেটা মান সেট করা না থাকে, custom_data ক্যোয়ারী প্যারামিটার মান SSV কলব্যাকে উপস্থিত থাকবে না।

নিচের কোড নমুনাটি দেখায় যে কিভাবে একটি বিজ্ঞাপনের অনুরোধ করার আগে একটি পুরস্কৃত বিজ্ঞাপন বস্তুতে কাস্টম ডেটা সেট করতে হয়।

সুইফট

do {
  rewardedAd = try await GADRewardedAd.load(
    withAdUnitID: "/21775744923/example/rewarded", request: GAMRequest())
  let options = GADServerSideVerificationOptions()
  options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
  rewardedAd.serverSideVerificationOptions = options
} catch {
  print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}

উদ্দেশ্য-C

[GADRewardedAd
     loadWithAdUnitID:@"/21775744923/example/rewarded"
              request:[GAMRequest request];
    completionHandler:^(GADRewardedAd *ad, NSError *error) {
      if (error) {
        // Handle Error
        return;
      }
      self.rewardedAd = ad;
      GADServerSideVerificationOptions *options =
          [[GADServerSideVerificationOptions alloc] init];
      options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
      ad.serverSideVerificationOptions = options;
    }];

কলব্যাকের জন্য নিবন্ধন করুন

উপস্থাপনা ইভেন্টের জন্য বিজ্ঞপ্তি পেতে, আপনাকে অবশ্যই GADFullScreenContentDelegate প্রোটোকল প্রয়োগ করতে হবে এবং ফেরত বিজ্ঞাপনের fullScreenContentDelegate সম্পত্তিতে এটি বরাদ্দ করতে হবে। GADFullScreenContentDelegate প্রোটোকল কখন বিজ্ঞাপনটি সফলভাবে বা অসফলভাবে উপস্থাপন করে এবং কখন এটি খারিজ করা হয় তার জন্য কলব্যাক পরিচালনা করে। নিম্নলিখিত কোডটি দেখায় কিভাবে প্রোটোকল প্রয়োগ করতে হয় এবং এটি বিজ্ঞাপনে বরাদ্দ করতে হয়:

সুইফট

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() async {
    do {
      rewardedAd = try await GADRewardedAd.load(
        withAdUnitID: "/21775744923/example/rewarded", request: GAMRequest())
      rewardedAd?.fullScreenContentDelegate = self
    } catch {
      print("Rewarded ad failed to load with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

সুইফটইউআই

প্রত্যাবর্তিত বিজ্ঞাপনে fullScreenContentDelegate সম্পত্তি বরাদ্দ করুন:

rewardedAd?.fullScreenContentDelegate = self

প্রোটোকল বাস্তবায়ন করুন:

func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: GADFullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the rewarded ad.
  rewardedAd = nil
}

উদ্দেশ্য-C

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd
      loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
        self.rewardedAd.fullScreenContentDelegate = self;
      }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad did dismiss full screen content.");
}

GADRewardedAd হল একটি একবার ব্যবহারযোগ্য বস্তু৷ এর অর্থ হল একটি পুরস্কৃত বিজ্ঞাপন একবার দেখানো হলে তা আর দেখানো যাবে না। একটি সর্বোত্তম অনুশীলন হল GADFullScreenContentDelegateadDidDismissFullScreenContent: পদ্ধতিতে অন্য একটি পুরস্কৃত বিজ্ঞাপন লোড করা যাতে পূর্ববর্তীটি খারিজ হওয়ার সাথে সাথে পরবর্তী পুরস্কৃত বিজ্ঞাপনটি লোড হতে শুরু করে।

বিজ্ঞাপন প্রদর্শন করুন এবং পুরস্কার ইভেন্ট পরিচালনা করুন

ব্যবহারকারীদের কাছে একটি পুরস্কৃত বিজ্ঞাপন প্রদর্শন করার আগে, আপনাকে অবশ্যই ব্যবহারকারীকে একটি পুরষ্কারের বিনিময়ে পুরস্কৃত বিজ্ঞাপন সামগ্রী দেখার জন্য একটি স্পষ্ট পছন্দ উপস্থাপন করতে হবে। পুরস্কৃত বিজ্ঞাপন সর্বদা একটি অপ্ট-ইন অভিজ্ঞতা হতে হবে।

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

নিম্নলিখিত কোডটি একটি পুরস্কৃত বিজ্ঞাপন প্রদর্শনের জন্য সর্বোত্তম পদ্ধতি উপস্থাপন করে।

সুইফট

func show() {
  guard let rewardedAd = rewardedAd else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  ad.present(fromRootViewController: nil) {
    let reward = ad.adReward
    print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
    // TODO: Reward the user.
  }
}

সুইফটইউআই

বিজ্ঞাপনটি কখন দেখাতে হবে তা নির্ধারণ করতে ভিউতে UI ইভেন্টগুলি শুনুন।

var body: some View {
  VStack(spacing: 20) {
      Button("Watch video for additional 10 coins") {
        viewModel.showAd()
        showWatchVideoButton = false
      }

ভিউ মডেল থেকে পুরস্কৃত বিজ্ঞাপন উপস্থাপন করুন:

func showAd() {
  guard let rewardedAd = rewardedAd else {
    return print("Ad wasn't ready.")
  }

  rewardedAd.present(fromRootViewController: nil) {
    let reward = rewardedAd.adReward
    print("Reward amount: \(reward.amount)")
    self.addCoins(reward.amount.intValue)
  }
}

উদ্দেশ্য-C

- (void)show {
  if (self.rewardedAd) {
    // The UIViewController parameter is nullable.
    [self.rewardedAd presentFromRootViewController:nil
                                  userDidEarnRewardHandler:^{
                                  GADAdReward *reward =
                                      self.rewardedAd.adReward;
                                  // TODO: Reward the user!
                                }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

FAQ

আমি কি GADRewardedAd জন্য পুরস্কারের বিবরণ পেতে পারি?
হ্যাঁ, userDidEarnReward কলব্যাক ফায়ার করার আগে আপনার যদি পুরষ্কারের পরিমাণের প্রয়োজন হয়, GADRewardedAd একটি adReward প্রপার্টি রয়েছে যা আপনি বিজ্ঞাপনটি লোড হওয়ার পরে পুরস্কারের পরিমাণ যাচাই করতে পরীক্ষা করতে পারেন।
আরম্ভ কলের জন্য একটি সময়সীমা আছে?
10 সেকেন্ডের পরে, Google Mobile Ads SDK GADInitializationCompletionHandler-কে startWithCompletionHandler: পদ্ধতিতে প্রদত্ত GADInitializationCompletionHandler কে আহ্বান করে, এমনকি যদি কোনো মধ্যস্থতা নেটওয়ার্ক এখনও শুরু না করে থাকে।
আমি যখন ইনিশিয়ালাইজেশন কলব্যাক পাই তখন কিছু মধ্যস্থতা নেটওয়ার্ক প্রস্তুত না হলে কী হবে?

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

আপনি GADMobileAds.initializationStatus এ কল করে আপনার অ্যাপ সেশন জুড়ে সমস্ত অ্যাডাপ্টারের প্রারম্ভিকতার স্থিতি পোল চালিয়ে যেতে পারেন।

একটি নির্দিষ্ট মধ্যস্থতা নেটওয়ার্ক কেন প্রস্তুত নয় তা আমি কীভাবে খুঁজে পাব?

একটি GADAdapterStatus অবজেক্টের description বৈশিষ্ট্য বর্ণনা করে যে কেন একটি অ্যাডাপ্টার বিজ্ঞাপনের অনুরোধের জন্য প্রস্তুত নয়।

userDidEarnRewardHandler কমপ্লিশন হ্যান্ডলার কি সবসময় adDidDismissFullScreenContent: প্রতিনিধি পদ্ধতির আগে কল করা হয়?

Google বিজ্ঞাপনগুলির জন্য, সমস্ত userDidEarnRewardHandler কলগুলি adDidDismissFullScreenContent: . মধ্যস্থতার মাধ্যমে পরিবেশিত বিজ্ঞাপনগুলির জন্য, তৃতীয় পক্ষের বিজ্ঞাপন নেটওয়ার্ক SDK-এর বাস্তবায়ন কলব্যাক অর্ডার নির্ধারণ করে৷ বিজ্ঞাপন নেটওয়ার্ক SDKগুলির জন্য যেগুলি পুরস্কারের তথ্য সহ একটি একক প্রতিনিধি পদ্ধতি প্রদান করে, মধ্যস্থতা অ্যাডাপ্টার adDidDismissFullScreenContent: এর আগে userDidEarnRewardHandler আহ্বান করে।

গিটহাবের উদাহরণ

আপনার পছন্দের ভাষায় সম্পূর্ণ পুরস্কৃত বিজ্ঞাপনের উদাহরণগুলি দেখুন:

পরবর্তী পদক্ষেপ

ব্যবহারকারীর গোপনীয়তা সম্পর্কে আরও জানুন।