একটি পুরস্কৃত বিজ্ঞাপন অ্যাডাপ্টার প্রয়োগ করা

একটি মধ্যস্থতা অ্যাডাপ্টার Google মোবাইল বিজ্ঞাপন SDK থেকে বার্তা এবং অনুরোধগুলি গ্রহণ করে এবং সেই অনুরোধগুলি পূরণ করার জন্য একটি তৃতীয় পক্ষের নেটওয়ার্ক SDK-এর সাথে যোগাযোগ করে৷

এই নির্দেশিকাটি বিজ্ঞাপন নেটওয়ার্কগুলির জন্য তৈরি করা হয়েছে যারা Google মোবাইল বিজ্ঞাপন মধ্যস্থতার জন্য একটি পুরস্কৃত বিজ্ঞাপন মধ্যস্থতা অ্যাডাপ্টার তৈরি করতে চায়৷ প্রদর্শনের উদ্দেশ্যে নিচের কোড স্নিপেটে একটি নমুনা SDK ব্যবহার করা হয়েছে। আপনি আমাদের iOSমধ্যস্থতা প্রকল্পে এই নমুনা SDK-এর জন্য নির্মিত একটি অ্যাডাপ্টারের সম্পূর্ণ বাস্তবায়ন খুঁজে পেতে পারেন। এই নির্দেশিকা ব্যাখ্যা করে কিভাবে অ্যাডাপ্টার তৈরি করতে হয়।

অ্যাডাপ্টারের শ্রেণীর নাম এবং সার্ভার পরামিতি সংজ্ঞায়িত করুন

AdMob মধ্যস্থতা প্ল্যাটফর্মের মাধ্যমে মধ্যস্থতা করা বিজ্ঞাপন নেটওয়ার্কগুলিতে সাধারণত একজন প্রকাশককে শনাক্ত করার জন্য এক বা একাধিক শনাক্তকারীর প্রয়োজন হয়। এই শনাক্তকারীগুলিকে সার্ভার প্যারামিটার হিসাবে উপস্থাপন করা হয় এবং AdMob UI- তে মধ্যস্থতার জন্য একটি তৃতীয় পক্ষের বিজ্ঞাপন নেটওয়ার্ক কনফিগার করার সময় সংজ্ঞায়িত করা হয়।

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

GADMediationAdapter প্রোটোকল মেনে চলুন

প্রথম ধাপ হল আপনার অ্যাডাপ্টার ক্লাসকে GADMediationAdapter প্রোটোকল বাস্তবায়ন করা:

#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>

@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end

এই পরিবর্তনটি নিশ্চিত করে যে আপনার ক্লাস নিচে আলোচনা করা বিভিন্ন পদ্ধতি প্রয়োগ করে।

অতিরিক্ত ক্লাস রিপোর্ট করুন

যদি তৃতীয় পক্ষের নেটওয়ার্ক প্রকাশকদের একটি বিজ্ঞাপনের অনুরোধের জন্য অতিরিক্ত ঐচ্ছিক প্যারামিটার পাস করার অনুমতি দিতে চায়, তাহলে extras ক্লাস অবশ্যই networkExtrasClass পদ্ধতি থেকে ফেরত দিতে হবে। যদি তৃতীয় পক্ষ প্রকাশককে অতিরিক্ত সরবরাহ করে সমর্থন না করে তবে Nil ফেরত দিন।

#import <GoogleMobileAds/GoogleMobileAds.h>

@interface SampleExtras : NSObject<GADAdNetworkExtras>

/// Use this to indicate if debug mode is on for logging.
@property(nonatomic) BOOL debugLogging;

/// Use this to indicate whether to mute audio for video ads.
@property(nonatomic) BOOL muteAudio;

@end
#import "GADMediationAdapterSampleAdNetwork.h"

@implementation GADMediationAdapterSampleAdNetwork
...
+ (Class<GADAdNetworkExtras>)networkExtrasClass {
  return [SampleExtras class];
}
...
@end

রিপোর্ট সংস্করণ সংখ্যা

অ্যাডাপ্টারটিকে অবশ্যই অ্যাডাপ্টারের সংস্করণ এবং তৃতীয় পক্ষের SDK সংস্করণ উভয়ই Google মোবাইল বিজ্ঞাপন SDK-তে রিপোর্ট করতে হবে৷ সংস্করণগুলি GADVersionNumberব্যবহার করে রিপোর্ট করা হয়েছে।

Google এর ওপেন সোর্স এবং সংস্করণযুক্ত অ্যাডাপ্টারগুলি একটি 4-সংখ্যার অ্যাডাপ্টার সংস্করণ স্কিম ব্যবহার করে, কিন্তু GADVersionNumberশুধুমাত্র 3 সংখ্যার জন্য অনুমতি দেয়। এটির চারপাশে কাজ করার জন্য, প্যাচ সংস্করণে শেষ দুটি সংখ্যা একত্রিত করার পরামর্শ দেওয়া হচ্ছে, যেমনটি নীচে দেখানো হয়েছে:

#import "GADMediationAdapterSampleAdNetwork.h"

@implementation GADMediationAdapterSampleAdNetwork
...
+ (GADVersionNumber)adSDKVersion {
  NSString *versionString = SampleSDKVersion;
  NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];

  GADVersionNumber version = {0};
  if (versionComponents.count >= 3) {
    version.majorVersion = [versionComponents[0] integerValue];
    version.minorVersion = [versionComponents[1] integerValue];
    version.patchVersion = [versionComponents[2] integerValue];
  }
  return version;
}

+ (GADVersionNumber)version {
  NSString *versionString = SampleAdapterVersion;
  NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];

  GADVersionNumber version = {0};
  if (versionComponents.count >= 4) {
    version.majorVersion = [versionComponents[0] integerValue];
    version.minorVersion = [versionComponents[1] integerValue];
    // Adapter versions have 2 patch versions. Multiply the first patch by 100.
    version.patchVersion =
        [versionComponents[2] integerValue] * 100 + [versionComponents[3] integerValue];
  }
  return version;
}
...
@end

অ্যাডাপ্টার শুরু করুন

যখন কোনো অ্যাপ Google Mobile Ads SDK চালু করে, তখন AdMob UI-এর মধ্যে অ্যাপটির জন্য কনফিগার করা সমস্ত অ্যাডাপ্টারে setUpWithConfiguration:completionHandler: চালু করা হয়।

GADMediationServerConfiguration আর্গুমেন্ট AdMob UI-এর মধ্যে অ্যাপের জন্য কনফিগার করা সমস্ত প্লেসমেন্টের তথ্য প্রদান করে। আপনার বিজ্ঞাপন নেটওয়ার্ক SDK শুরু করতে এই তথ্য ব্যবহার করুন। আপনার বিজ্ঞাপন নেটওয়ার্ক SDK আরম্ভ হয়ে গেলে, GADMediationAdapterSetUpCompletionBlock আর্গুমেন্ট শুরু করুন। এই ব্লকটি আপনাকে nil বা একটি NSError অবজেক্টের সাথে সমাপ্তি হ্যান্ডলারকে আহ্বান করে Google মোবাইল বিজ্ঞাপন SDK-তে একটি সফল বা ব্যর্থ সূচনা প্রতিবেদন করতে দেয়।

#import "SampleAdapter.h"

@implementation SampleAdapter
...
+ (void)setUpWithConfiguration:(GADMediationServerConfiguration *)configuration
             completionHandler:(GADMediationAdapterSetUpCompletionBlock)completionHandler {
  // Since the Sample SDK doesn't need to be initialized, the completion
  //handler is called directly here.
  completionHandler(nil);
}
...
@end

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

যখন কোনো অ্যাপ Google Mobile Ads SDK-এর মাধ্যমে একটি পুরস্কৃত বিজ্ঞাপন লোড করে, loadRewardedAdForAdConfiguration:completionHandler: আপনার বিজ্ঞাপন নেটওয়ার্ক মধ্যস্থতা জলপ্রপাতের মধ্যে পৌঁছে গেলে অ্যাডাপ্টারে আহ্বান করা হয়।

GADRewardedLoadCompletionHandler আপনাকে GADMediationRewardedAd প্রোটোকলের সাথে সামঞ্জস্যপূর্ণ একটি বস্তুর একটি রেফারেন্স প্রদান করে, অথবা একটি nil রেফারেন্স এবং একটি NSError অবজেক্ট প্রদান করে একটি ব্যর্থ বিজ্ঞাপন লোডের জন্য Google মোবাইল বিজ্ঞাপন SDK-এ একটি সফল বিজ্ঞাপন লোড রিপোর্ট করতে দেয়৷ লোড কমপ্লিশন হ্যান্ডলারের আমন্ত্রণ একটি GADMediationRewardedAdEventDelegate প্রদান করে যা আপনার অ্যাডাপ্টারকে বিজ্ঞাপনের জীবনচক্রের জন্য ধরে রাখা উচিত যাতে পরবর্তী কোনো ইভেন্টের জন্য Google মোবাইল বিজ্ঞাপন SDK-কে অবহিত করা হয়।

#import "SampleAdapter.h"

@interface SampleAdapter () <GADMediationRewardedAd> {
  /// Rewarded ads from Sample SDK.
  SampleRewardedAd *_rewardedAd;

  /// Handles any callback when the sample rewarded ad finishes loading.
  GADMediationRewardedLoadCompletionHandler _loadCompletionHandler;

  /// Delegate for receiving rewarded ad notifications.
  __weak id<GADMediationRewardedAdEventDelegate> _rewardedAdDelegate;
}
@end

@implementation SampleAdapter
...
- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
                       completionHandler:
                           (GADMediationRewardedLoadCompletionHandler)completionHandler {
  _loadCompletionHandler = completionHandler;

  NSString *adUnit = adConfiguration.credentials.settings[SampleSDKAdUnitIDKey];
  SampleExtras *extras = adConfiguration.extras;

  _rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit];
  _rewardedAd.enableDebugLogging = extras.enableDebugLogging;

  /// Check the extras to see if the request should be customized.
  SampleAdRequest *request = [[SampleAdRequest alloc] init];
  request.mute = extras.muteAudio;

  /// Set the delegate on the rewarded ad to listen for callbacks from the Sample SDK.
  _rewardedAd.delegate = self;
  [_rewardedAd fetchAd:request];
}
...
@end

রিলে বিজ্ঞাপন লোড ঘটনা

তৃতীয় পক্ষের SDK কলব্যাকগুলি শোনা এবং উপযুক্ত Google মোবাইল বিজ্ঞাপন SDK কলব্যাকের সাথে তাদের ম্যাপ করা অ্যাডাপ্টারের দায়িত্ব৷

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

- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
  _rewardedAdDelegate = _loadCompletionHandler(self, nil);
}

- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
  _loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
                                                  code:GADErrorNoFill
                                              userInfo:nil]);
}

বিজ্ঞাপন দেখান

অ্যাপটি যখন Google মোবাইল বিজ্ঞাপন SDK-কে পুরস্কৃত বিজ্ঞাপনটি উপস্থাপন করতে বলে, তখন SDK লোড কমপ্লিশন হ্যান্ডলারের কলে দেওয়া GADMediationRewardedAd এর উদাহরণে presentFromViewController: পদ্ধতিতে কল করে। এখানে আপনার পুরস্কৃত বিজ্ঞাপন উপস্থাপন করা উচিত:

- (void)presentFromViewController:(nonnull UIViewController *)viewController {
  if (!_rewardedAd.isReady) {
    NSError *error =
        [NSError errorWithDomain:kAdapterErrorDomain
                            code:0
                        userInfo:@{NSLocalizedDescriptionKey : @"Unable to display ad."}];
    [_rewardedAdDelegate didFailToPresentWithError:error];
    return;
  }
  [_rewardedAd presentFromRootViewController:viewController];
}

মোবাইল বিজ্ঞাপন SDK-এ বিজ্ঞাপন ইভেন্টের প্রতিবেদন করুন

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

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

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

যে বিজ্ঞাপন ইভেন্টগুলি Google মোবাইল বিজ্ঞাপন SDK-তে রিপোর্ট করা উচিত সেগুলি নীচে বিশদ বিবরণ দেওয়া হয়েছে:

বিজ্ঞাপন ইভেন্ট বর্ণনা
willPresentFullScreenView Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি প্রদর্শিত হবে৷
স্টার্টভিডিও করেছে Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে একটি পুরস্কৃত বিজ্ঞাপন চলতে শুরু করেছে।
রিপোর্ট ইমপ্রেশন Google মোবাইল বিজ্ঞাপন SDK কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটিতে একটি ইমপ্রেশন ঘটেছে৷
এন্ডভিডিও করেছে Google মোবাইল বিজ্ঞাপন SDK-কে জানিয়ে দেয় যে পুরস্কৃত বিজ্ঞাপনটি চালানো শেষ হয়েছে।
didRewardUserWithReward Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে ব্যবহারকারী একটি পুরস্কার জিতেছে।
রিপোর্ট ক্লিক করুন Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটিতে ক্লিক করা হয়েছে৷
উইল ডিসমিসফুলস্ক্রিনভিউ Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি খারিজ করা হবে৷
ডিসমিসফুলস্ক্রিনভিউ করেছে Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি খারিজ করা হয়েছে৷