পুরস্কৃত বিজ্ঞাপন কাস্টম ইভেন্ট

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস

পূর্বশর্ত

কাস্টম ইভেন্ট সেটআপ সম্পূর্ণ করুন।

একটি পুরস্কৃত বিজ্ঞাপনের অনুরোধ করুন

যখন ওয়াটারফল মেডিয়েশন চেইনে কাস্টম ইভেন্ট লাইন আইটেমটি পৌঁছানো হয়, তখন একটি কাস্টম ইভেন্ট তৈরি করার সময় আপনার দেওয়া ক্লাসের নামের উপর loadRewarded:adConfiguration:completionHandler: পদ্ধতিটি কল করা হয়। এই ক্ষেত্রে, সেই পদ্ধতিটি SampleCustomEvent এ থাকে, যা পরে SampleCustomEventRewardedloadRewarded:adConfiguration:completionHandler: পদ্ধতিটিকে কল করে।

একটি পুরস্কৃত বিজ্ঞাপনের অনুরোধ করতে, এমন একটি ক্লাস তৈরি বা পরিবর্তন করুন যা GADMediationAdapter এবং loadRewarded:adConfiguration:completionHandler: প্রয়োগ করে। যদি GADMediationAdapter প্রসারিত করে এমন একটি ক্লাস ইতিমধ্যেই বিদ্যমান থাকে, তাহলে সেখানে loadRewarded:adConfiguration:completionHandler: প্রয়োগ করুন। অতিরিক্তভাবে, GADMediationRewardedAd বাস্তবায়নের জন্য একটি নতুন ক্লাস তৈরি করুন।

আমাদের কাস্টম ইভেন্ট উদাহরণে, SampleCustomEvent GADMediationAdapter ইন্টারফেস প্রয়োগ করে এবং তারপর SampleCustomEventRewarded এ ডেলিগেট করে।

সুইফট

import GoogleMobileAds

class SampleCustomEvent: NSObject, MediationAdapter {

  fileprivate var rewardedAd: SampleCustomEventRewarded?
  ...

  func loadRewarded(
    for adConfiguration: MediationRewardedAdConfiguration,
    completionHandler: @escaping GADMediationRewardedLoadCompletionHandler
  ) {
    self.rewardedAd = SampleCustomEventRewarded()
    self.rewardedAd?.loadRewarded(
      for: adConfiguration, completionHandler: completionHandler)
  }
}

অবজেক্টিভ-সি

#import "SampleCustomEvent.h"

@implementation SampleCustomEvent
...

SampleCustomEventRewarded *sampleRewarded;

- (void)loadRewardedForAdConfiguration:
            (GADMediationRewardedAdConfiguration *)adConfiguration
                     completionHandler:
                         (GADMediationRewardedLoadCompletionHandler)
                             completionHandler {
  sampleRewarded = [[SampleCustomEventRewarded alloc] init];
  [sampleRewarded loadRewardedForAdConfiguration:adConfiguration
                               completionHandler:completionHandler];
}

SampleCustomEventRewarded নিম্নলিখিত কাজগুলির জন্য দায়ী:

  • পুরস্কৃত বিজ্ঞাপনটি লোড হচ্ছে।

  • GADMediationRewardedAd প্রোটোকল বাস্তবায়ন করা।

  • Google মোবাইল বিজ্ঞাপন SDK-তে বিজ্ঞাপন ইভেন্ট কলব্যাক গ্রহণ এবং রিপোর্ট করা।

বিজ্ঞাপন ম্যানেজার UI-তে সংজ্ঞায়িত ঐচ্ছিক প্যারামিটারটি বিজ্ঞাপন কনফিগারেশনে অন্তর্ভুক্ত থাকে। প্যারামিটারটি adConfiguration.credentials.settings[@"parameter"] এর মাধ্যমে অ্যাক্সেস করা যেতে পারে। এই প্যারামিটারটি সাধারণত একটি বিজ্ঞাপন ইউনিট শনাক্তকারী যা একটি বিজ্ঞাপন নেটওয়ার্ক SDK-এর জন্য একটি বিজ্ঞাপন বস্তু ইনস্ট্যান্টিয়েট করার সময় প্রয়োজন হয়।

সুইফট

class SampleCustomEventRewarded: NSObject, MediationRewardedAd {
  /// The Sample Ad Network rewarded ad.
  var nativeAd: SampleRewarded?

  /// The ad event delegate to forward ad rendering events to Google Mobile Ads SDK.
  var delegate: MediationRewardedAdEventDelegate?

  /// Completion handler called after ad load.
  var completionHandler: GADMediationRewardedLoadCompletionHandler?

  func loadRewarded(
    for adConfiguration: MediationRewardedAdConfiguration,
    completionHandler: @escaping GADMediationRewardedLoadCompletionHandler
  ) {
    rewarded = SampleRewarded.init(
      adUnitID: adConfiguration.credentials.settings["parameter"] as? String)
    rewarded?.delegate = self
    let adRequest = SampleAdRequest()
    adRequest.testMode = adConfiguration.isTestRequest
    self.completionHandler = completionHandler
    rewarded?.fetchAd(adRequest)
  }
}

অবজেক্টিভ-সি

#import "SampleCustomEventRewarded.h"

@interface SampleCustomEventRewarded () <SampleRewardedAdDelegate,
                                         GADMediationRewardedAd> {
  /// The sample rewarded ad.
  SampleRewarded *_rewardedAd;

  /// The completion handler to call when the ad loading succeeds or fails.
  GADMediationRewardedLoadCompletionHandler _loadCompletionHandler;

  /// The ad event delegate to forward ad rendering events to Google Mobile Ads SDK.
  id <GADMediationRewardedAdEventDelegate> _adEventDelegate;
}
@end

- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
                       completionHandler:
                           (GADMediationRewardedLoadCompletionHandler)completionHandler {
  __block atomic_flag completionHandlerCalled = ATOMIC_FLAG_INIT;
  __block GADMediationRewardedLoadCompletionHandler originalCompletionHandler =
      [completionHandler copy];

  _loadCompletionHandler = ^id<GADMediationRewardedAdEventDelegate>(
      _Nullable id<GADMediationRewardedAd> ad, NSError *_Nullable error) {
    // Only allow completion handler to be called once.
    if (atomic_flag_test_and_set(&completionHandlerCalled)) {
      return nil;
    }

    id<GADMediationRewardedAdEventDelegate> delegate = nil;
    if (originalCompletionHandler) {
      // Call original handler and hold on to its return value.
      delegate = originalCompletionHandler(ad, error);
    }

    // Release reference to handler. Objects retained by the handler will also be released.
    originalCompletionHandler = nil;

    return delegate;
  };

  NSString *adUnit = adConfiguration.credentials.settings[@"parameter"];
  _rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit];
  _rewardedAd.delegate = self;
  SampleAdRequest *adRequest = [[SampleAdRequest alloc] init];
  adRequest.testMode = adConfiguration.isTestRequest;
  [_rewardedAd fetchAd:adRequest];
}

বিজ্ঞাপনটি সফলভাবে আনা হোক বা কোনও ত্রুটির সম্মুখীন হোক, আপনি GADMediationRewardedLoadCompletionHandler কল করবেন। সফল হলে, ত্রুটি প্যারামিটারের জন্য nil মান সহ GADMediationRewardedAd প্রয়োগকারী ক্লাসটি পাস করুন; ব্যর্থ হলে, আপনার সম্মুখীন ত্রুটিটি পাস করুন।

সাধারণত, এই পদ্ধতিগুলি আপনার অ্যাডাপ্টার দ্বারা প্রয়োগ করা তৃতীয় পক্ষের SDK থেকে কলব্যাকের ভিতরে প্রয়োগ করা হয়। এই উদাহরণের জন্য, Sample SDK-তে প্রাসঙ্গিক কলব্যাক সহ একটি SampleRewardedAdDelegate রয়েছে:

সুইফট

func rewardedDidLoad(_ interstitial: SampleRewarded) {
  if let handler = completionHandler {
    delegate = handler(self, nil)
  }
}

func rewarded(
  rewarded: SampleRewarded, didFailToLoadAdWith errorCode: SampleErrorCode
) {
  let error =
    SampleCustomEventUtils.SampleCustomEventErrorWithCodeAndDescription(
      code: SampleCustomEventErrorCode
        .SampleCustomEventErrorAdLoadFailureCallback,
      description:
        "Sample SDK returned an ad load failure callback with error code: \(errorCode)"
    )
  if let handler = completionHandler {
    delegate = handler(nil, error)
  }
}

অবজেক্টিভ-সি

- (void)rewardedDidLoad:(SampleRewarded *)rewarded {
  _adEventDelegate = _loadCompletionHandler(self, nil);
}

- (void)rewarded:(SampleInterstitial *)rewarded
    didFailToLoadAdWithErrorCode:(SampleErrorCode)errorCode {
  NSError *error = SampleCustomEventErrorWithCodeAndDescription(
      SampleCustomEventErrorAdLoadFailureCallback,
      [NSString stringWithFormat:@"Sample SDK returned an ad load failure "
                                 @"callback with error code: %@",
                                 errorCode]);
  _adEventDelegate = _loadCompletionHandler(nil, error);
}

GADMediationrewardedAd বিজ্ঞাপনটি প্রদর্শনের জন্য একটি present(viewController:) পদ্ধতি প্রয়োগ করতে হবে:

সুইফট

func present(from viewController: UIViewController) {
  if let rewarded = rewarded, rewarded.isRewardedLoaded {
    rewarded.show()
  }
}

অবজেক্টিভ-সি

- (void)presentFromViewController:(UIViewController *)viewController {
  if ([_rewardedAd isRewardedLoaded]) {
    [_rewardedAd show];
  } else {
    NSError *error = SampleCustomEventErrorWithCodeAndDescription(
        SampleCustomEventErrorAdNotLoaded,
        [NSString stringWithFormat:
                      @"The rewarded ad failed to present because the ad was not loaded."]);
    [_adEventDelegate didFailToPresentWithError:error]
  }
}

মধ্যস্থতা ইভেন্টগুলি Google মোবাইল বিজ্ঞাপন SDK-তে ফরোয়ার্ড করুন

একবার আপনি একটি লোড করা বিজ্ঞাপনের সাথে GADMediationRewardedLoadCompletionHandler কল করলে, ফেরত আসা GADMediationRewardedAdEventDelegate ডেলিগেট অবজেক্টটি অ্যাডাপ্টার দ্বারা তৃতীয় পক্ষের SDK থেকে Google Mobile Ads SDK-তে উপস্থাপনা ইভেন্টগুলি ফরোয়ার্ড করতে ব্যবহার করা যেতে পারে। SampleCustomEventRewarded ক্লাসটি SampleRewardedAdDelegate প্রোটোকল প্রয়োগ করে নমুনা বিজ্ঞাপন নেটওয়ার্ক থেকে Google Mobile Ads SDK-তে কলব্যাক ফরোয়ার্ড করে।

আপনার কাস্টম ইভেন্টটি যতটা সম্ভব এই কলব্যাকগুলিকে ফরোয়ার্ড করা গুরুত্বপূর্ণ, যাতে আপনার অ্যাপটি Google Mobile Ads SDK থেকে এই সমতুল্য ইভেন্টগুলি গ্রহণ করে। কলব্যাক ব্যবহারের একটি উদাহরণ এখানে দেওয়া হল:

সুইফট

func rewardedAdDidPresent(_ rewarded: SampleRewardedAd) {
  delegate?.willPresentFullScreenVideo()
  delegate?.didStartVideo()
}

func rewardedAdUserDidEarnReward(_ rewarded: SampleRewardedAd) {
  AdReward aReward = AdReward("", rewarded)
  delegate.didRewardUser()
}

অবজেক্টিভ-সি

- (void)rewardedAdDidPresent:(SampleRewardedAd *)rewardedAd {
  [_adEventDelegate willPresentFullScreenView];
  [_adEventDelegate didStartVideo];
}

- (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd
    userDidEarnReward:(NSUInteger)reward {
  GADAdReward *aReward = [[GADAdReward alloc]
      initWithRewardType:@""
            rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]];
  [_adEventDelegate didRewardUserWithReward];
}

এটি পুরস্কৃত বিজ্ঞাপনের জন্য কাস্টম ইভেন্ট বাস্তবায়ন সম্পূর্ণ করে। সম্পূর্ণ উদাহরণটি GitHub- এ পাওয়া যাবে। আপনি এটি এমন একটি বিজ্ঞাপন নেটওয়ার্কের সাথে ব্যবহার করতে পারেন যা ইতিমধ্যেই সমর্থিত, অথবা কাস্টম ইভেন্ট পুরস্কৃত বিজ্ঞাপন প্রদর্শনের জন্য এটি পরিবর্তন করতে পারেন।