इनाम वाला विज्ञापन अडैप्टर लागू करना

मीडिएशन अडैप्टर को Google मोबाइल विज्ञापन SDK से मैसेज और अनुरोध मिलते हैं. साथ ही, उन अनुरोधों को पूरा करने के लिए, वह तीसरे पक्ष के नेटवर्क SDK टूल से संपर्क करता है.

यह गाइड उन विज्ञापन नेटवर्क के लिए है जो Google मोबाइल विज्ञापन मीडिएशन के लिए इनाम वाले विज्ञापन मीडिएशन अडैप्टर बनाना चाहते हैं. वीडियो की जानकारी देने के लिए, नीचे दिए गए कोड स्निपेट में SDK टूल के सैंपल का इस्तेमाल किया गया है. हमारे Android मीडिएशन प्रोजेक्ट में, SDK टूल के इस सैंपल के लिए बनाए गए अडैप्टर को पूरी तरह से लागू किया जा सकता है. इस गाइड में अडैप्टर बनाने का तरीका बताया गया है.

अडैप्टर क्लास का नाम और सर्वर के पैरामीटर तय करें

AdMob मीडिएशन प्लैटफ़ॉर्म से मीडिएशन करने वाली विज्ञापन नेटवर्क कंपनियों को, पब्लिशर की पहचान के लिए एक या ज़्यादा आइडेंटिफ़ायर की ज़रूरत होती है. इन आइडेंटिफ़ायर को सर्वर पैरामीटर के तौर पर दिखाया जाता है. इन्हें AdMob यूज़र इंटरफ़ेस (यूआई) में मीडिएशन के लिए, तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी को कॉन्फ़िगर करते समय तय किया जाता है.

मीडिएशन अडैप्टर डेवलप करने से पहले, आपको अपने विज्ञापन नेटवर्क का ऐक्सेस पाने के लिए Google को अडैप्टर क्लास का नाम और दूसरे ज़रूरी पैरामीटर देने होंगे.

अडैप्टर क्लास लागू करें

सबसे पहले, अडैप्टर ऐब्स्ट्रैक्ट क्लास को लागू करें:

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

public class SampleAdapter extends Adapter {
 ...
}

इस बदलाव से यह पक्का होता है कि आपकी क्लास, यहां बताए गए कई तरीके लागू करती है.

वर्शन नंबर की रिपोर्ट करें

अडैप्टर को Google Mobile Ads SDK को, अडैप्टर के वर्शन और तीसरे पक्ष के SDK टूल के वर्शन, दोनों को रिपोर्ट करना होगा. वर्शन की रिपोर्ट VersionInfoका इस्तेमाल करके की जाती है.

Google के ओपन सोर्स और अलग-अलग वर्शन एडैप्टर 4-अंकों के अडैप्टर वर्शन स्कीम का इस्तेमाल करते हैं, लेकिन VersionInfo सिर्फ़ तीन अंकों का इस्तेमाल कर सकते हैं. इससे बचने के लिए, हमारा सुझाव है कि नीचे बताए गए तरीके से, आखिरी दो अंकों को पैच वर्शन में जोड़ लें:

...
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 Mobile Ads SDK शुरू करने पर, AdMob यूज़र इंटरफ़ेस (यूआई) में ऐप्लिकेशन के लिए कॉन्फ़िगर किए गए सभी अडैप्टर पर initialize() शुरू हो जाता है.

List<MediationConfiguration> आर्ग्युमेंट, AdMob यूज़र इंटरफ़ेस (यूआई) में आपके विज्ञापन नेटवर्क के लिए कॉन्फ़िगर किए गए सभी प्लेसमेंट की जानकारी देता है. इस जानकारी का इस्तेमाल करके अपने विज्ञापन नेटवर्क का SDK टूल शुरू करें. विज्ञापन नेटवर्क कंपनी का SDK टूल शुरू होने के बाद, इसकी शिकायत Google Mobile Ads SDK में करें या शुरू न होने पर, इसकी शिकायत करें. इसके लिए, initialize() कॉल में दिए गए InitializationCompleteCallbackतर्क पर, onInitializationSucceeded() या onInitializationFailed() तरीका इस्तेमाल करें.

...
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 Mobile Ads 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 Mobile Ads 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);
  }
  ...
}

Mobile Ads SDK में विज्ञापन इवेंट की रिपोर्ट करें

विज्ञापन दिखाने के बाद, अडैप्टर को विज्ञापन लोड होने के सही समय पर मिलेMediationRewardedAdCallback ऑब्जेक्ट का इस्तेमाल करके, Google Mobile Ads SDK के हिसाब से विज्ञापन लाइफ़साइकल इवेंट को रिपोर्ट करना चाहिए.

आम तौर पर, ये कॉलबैक आपके विज्ञापन नेटवर्क के 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 Mobile Ads SDK से रिपोर्ट किए जाने वाले विज्ञापन इवेंट के बारे में नीचे जानकारी दी गई है:

विज्ञापन इवेंट ब्यौरा
onAdOpened() Google Mobile Ads SDK को सूचना देता है कि विज्ञापन खोला जाएगा.
onVideoStart() यह Google Mobile Ads SDK को सूचना देता है कि इनाम वाला विज्ञापन दिखना शुरू हुआ है.
reportAdImpression() Google Mobile Ads SDK को सूचना देता है कि विज्ञापन पर कोई इंप्रेशन मिला है.
onVideoComplete() यह Google Mobile Ads SDK को सूचना देता है कि इनाम वाला विज्ञापन चल चुका है.
onUserEarnedReward() Google Mobile Ads SDK से यह सूचना देता है कि उपयोगकर्ता को इनाम मिला है.
reportAdClicked() Google Mobile Ads SDK को यह सूचना देता है कि विज्ञापन पर क्लिक किया गया है.
onAdClosed() Google Mobile Ads SDK को यह सूचना देता है कि विज्ञापन बंद हो गया है.
onAdFailedToShow() Google Mobile Ads SDK को सूचना देता है कि विज्ञापन नहीं दिखाया जा सका.