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

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

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

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

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

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

অ্যাডাপ্টার ক্লাস বাস্তবায়ন করুন

প্রথম ধাপ হল অ্যাডাপ্টার বিমূর্ত ক্লাস বাস্তবায়ন করা:

...
import com.google.android.gms.ads.mediation.Adapter;
...

public class SampleAdapter extends Adapter {
 ...
}

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

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

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

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

...
import com.google.android.gms.ads.VersionInfo;
...

public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
  ...
  @Override
  public VersionInfo getVersionInfo() {
    String versionString = BuildConfig.VERSION_NAME;
    String[] splits = versionString.split("\\.");

    if (splits.length >= 4) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }

  @Override
  public VersionInfo getSDKVersionInfo() {
    String versionString = SampleAdRequest.getSDKVersion();
    String[] splits = versionString.split("\\.");

    if (splits.length >= 3) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }
  ...
}

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

Google মোবাইল বিজ্ঞাপন SDK-এর একটি অ্যাপের আরম্ভ করার পরে, AdMob UI-এর মধ্যে অ্যাপটির জন্য কনফিগার করা সমস্ত অ্যাডাপ্টারে initialize() চালু করা হয়।

List<MediationConfiguration> আর্গুমেন্ট AdMob UI এর মধ্যে আপনার বিজ্ঞাপন নেটওয়ার্কের জন্য কনফিগার করা সমস্ত প্লেসমেন্টের তথ্য প্রদান করে। আপনার বিজ্ঞাপন নেটওয়ার্ক SDK শুরু করতে এই তথ্য ব্যবহার করুন। একবার আপনার বিজ্ঞাপন নেটওয়ার্ক SDK আরম্ভ হয়ে গেলে, initialize() কলে প্রদত্ত InitializationCompleteCallback আর্গুমেন্টে onInitializationSucceeded() অথবা onInitializationFailed() পদ্ধতি ব্যবহার করে Google Mobile Ads SDK-কে সফল বা ব্যর্থ সূচনার রিপোর্ট করুন।

...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...

public class SampleAdapter extends Adapter {
  ...
  @Override
  public void initialize(
      Context context,
      InitializationCompleteCallback initializationCompleteCallback,
      List<MediationConfiguration> mediationConfigurations) {
    if (context == null) {
      initializationCompleteCallback.onInitializationFailed(
          "Initialization Failed: Context is null.");
      return;
    }

    // The Sample SDK doesn't have an initialization method, so this example
    // immediately reports a success callback.
    initializationCompleteCallback.onInitializationSucceeded();
  }
  ...
}

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

একটি পুরস্কৃত বিজ্ঞাপনের অনুরোধ করতে loadRewardedAd() পদ্ধতি ব্যবহার করুন। MediationAdLoadCallback এর একটি রেফারেন্স ধরে রাখুন, যা আপনাকে Google মোবাইল বিজ্ঞাপন SDK-তে একটি সফল বা ব্যর্থ বিজ্ঞাপন লোডের রিপোর্ট করতে দেয়।

একবার onSuccess() চালু করা হলে MediationRewardedAdCallback অবজেক্টটি উপলব্ধ হবে, যা আপনি পরে ক্লিক বা পুরস্কারের মতো অন্যান্য বিজ্ঞাপন ইভেন্ট রিলে করতে ব্যবহার করবেন।

...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationRewardedAd;
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
...

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...

  /**
   * A MediationAdLoadCallback that handles any callback when a Sample rewarded
   * ad finishes loading.
   */
  private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;

  /**
   * Represents a SampleRewardedAd.
   */
  private SampleRewardedAd sampleRewardedAd;

  /**
   * Used to forward rewarded video ad events to the Google Mobile Ads SDK..
   */
  private MediationRewardedAdCallback rewardedAdCallback;

  ...

  // Hold a reference to the MediationAdLoadCallback object to report ad load
  // events to the Google Mobile Ads SDK.
  @Override
  public void loadRewardedAd(
      MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
          mediationAdLoadCallback) {
    adLoadCallBack = mediationAdLoadCallback;
    MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;

    String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);

    sampleRewardedAd = new SampleRewardedAd(adUnitId);
    SampleAdRequest request = new SampleAdRequest();
    sampleRewardedAd.setListener(this);
    sampleRewardedAd.loadAd(request);
  }

  // Hold a reference to the MediationRewardedAdCallback object to report ad
  // lifecycle events to the Google Mobile Ads SDK.
  @Override
  public void onRewardedAdLoaded() {
    rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
  }

  @Override
  public void onRewardedAdFailedToLoad(SampleErrorCode error) {
    mediationAdLoadCallBack.onFailure(error.toString());
  }
  ...
}

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

SDK সফল বিজ্ঞাপন লোডের বিষয়ে সূচিত হওয়ার পরে Google মোবাইল বিজ্ঞাপন SDK আপনার অ্যাডাপ্টারের showAd() পদ্ধতিতে কল করতে পারে। অ্যাডাপ্টার পুরস্কৃত বিজ্ঞাপন প্রদর্শন করা উচিত. যদি কোনো কারণে বিজ্ঞাপনটি দেখানো না যায়, তাহলে onAdFailedToShow() কলব্যাকে কল করুন।

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void showAd(Context context) {
    if (!(context instanceof Activity)) {
      rewardedAdCallback.onAdFailedToShow(
          "An activity context is required to show Sample rewarded ad.");
      return;
    }
    Activity activity = (Activity) context;

    if (!sampleRewardedAd.isAdAvailable()) {
      rewardedAdCallback.onAdFailedToShow("No ads to show.");
      return;
    }
    sampleRewardedAd.showAd(activity);
  }
  ...
}

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

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

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

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void onAdRewarded(final String rewardType, final int amount) {
    RewardItem rewardItem =
        new RewardItem() {
          @Override
          public String getType() {
            return rewardType;
          }

          @Override
          public int getAmount() {
            return amount;
          }
        };
    rewardedAdCallback.onUserEarnedReward(rewardItem);
  }

  @Override
  public void onAdClicked() {
    rewardedAdCallback.reportAdClicked();
  }

  @Override
  public void onAdFullScreen() {
    rewardedAdCallback.onAdOpened();
    rewardedAdCallback.onVideoStart();
    rewardedAdCallback.reportAdImpression();
  }

  @Override
  public void onAdClosed() {
    rewardedAdCallback.onAdClosed();
  }

  @Override
  public void onAdCompleted() {
    rewardedAdCallback.onVideoComplete();
  }
  ...
}

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

বিজ্ঞাপন ইভেন্ট বর্ণনা
onAdOpened() Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি খোলা হবে।
onVideoStart() Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে একটি পুরস্কৃত বিজ্ঞাপন চলতে শুরু করেছে।
রিপোর্টএড ইমপ্রেশন() Google মোবাইল বিজ্ঞাপন SDK কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটিতে একটি ইমপ্রেশন ঘটেছে৷
onVideoComplete() Google মোবাইল বিজ্ঞাপন SDK-কে জানিয়ে দেয় যে পুরস্কৃত বিজ্ঞাপনটি চালানো শেষ হয়েছে।
onUserEarnedReward() Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে ব্যবহারকারী একটি পুরস্কার জিতেছে।
রিপোর্টAdClicked() Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটিতে ক্লিক করা হয়েছে৷
onAdclosed() Google মোবাইল বিজ্ঞাপন SDK-কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি বন্ধ হয়ে গেছে।
onAdFailedToShow() Google মোবাইল বিজ্ঞাপন SDK কে বিজ্ঞপ্তি দেয় যে বিজ্ঞাপনটি দেখাতে ব্যর্থ হয়েছে৷