Google মধ্যস্থতার মধ্যে রিয়েল-টাইম বিডিং (RTB) এ অংশগ্রহণ করার জন্য একটি বিডিং অ্যাডাপ্টার তৈরি করতে চাওয়া বিজ্ঞাপন নেটওয়ার্কগুলির জন্য এই নির্দেশিকাটি তৈরি করা হয়েছে৷ আপনি যদি একজন প্রকাশক হন, তাহলে প্রকাশকের মধ্যস্থতার নির্দেশাবলী দেখুন।
একটি বিডিং অ্যাডাপ্টার হল ইন্টিগ্রেশনের ক্লায়েন্ট-সাইড অংশ। অ্যাডাপ্টার আপনার বিজ্ঞাপন নেটওয়ার্ক SDK কে Google মোবাইল বিজ্ঞাপন SDK-এর সাথে যোগাযোগ করতে সক্ষম করে যাতে আপনার দরদাতার বিজ্ঞাপনগুলি লোড হয়৷
বিডিং সঠিকভাবে কাজ করার জন্য আপনার অ্যাডাপ্টারকে শুরু করা, সংকেত সংগ্রহ করা, বিজ্ঞাপন লোড করা এবং বিজ্ঞাপনের জীবনচক্র ইভেন্টগুলি রিলে করা দরকার। এই ক্রিয়াকলাপগুলি পরিচালনা করার জন্য কীভাবে আপনার অ্যাডাপ্টার প্রয়োগ করা উচিত তা এই নির্দেশিকায় আমরা আপনাকে নিয়ে চলব।
একটি বিডিং অ্যাডাপ্টারের কর্মপ্রবাহ
সূচনা
একটি অ্যাডাপ্টারের সমগ্র অনুরোধ-প্রতিক্রিয়া-রেন্ডারিং জীবনচক্রের একটি বিস্তারিত প্রবাহ নীচে দেখানো হয়েছে:
অ্যাডাপ্টার কর্মপ্রবাহের নিম্নলিখিত অংশগুলির জন্য দায়ী:
ধাপ 4-7: আপনার অ্যাডাপ্টার চালু করুন এবং একবার শুরু হয়ে গেলে Google মোবাইল বিজ্ঞাপন SDK-কে আবার কল করুন।
ধাপ 10-13: আপনার বিজ্ঞাপন নেটওয়ার্ক SDK থেকে সংকেত সংগ্রহ করুন যা আপনার দরদাতার কাছে পাঠানো হবে একটি RTB অনুরোধে অংশ নিতে এবং সেগুলিকে Google Mobile Ads SDK-এ ফরোয়ার্ড করুন৷
ধাপ 18-21: আপনার দরদাতা বিজয়ী বিড ফেরত দিলে, আপনার দরদাতার প্রতিক্রিয়া অনুযায়ী বিজ্ঞাপনটি লোড করুন। একবার লোড হয়ে গেলে, Google মোবাইল বিজ্ঞাপন SDK-কে জানান যে বিজ্ঞাপনটি লোড হয়েছে৷
ধাপ 23 এবং পরবর্তী: আপনার বিজ্ঞাপন দেখানোর সময়, Google মোবাইল বিজ্ঞাপন SDK-কে ইম্প্রেশন এবং ক্লিক ইভেন্টের সাথে সাথে আপনার বিজ্ঞাপনের উপস্থাপনা জীবনচক্রের সময় ঘটে যাওয়া অন্যান্য বিজ্ঞাপন ইভেন্টগুলিকে অবহিত করুন।
বিডিং অ্যাডাপ্টার বাস্তবায়ন
Google মোবাইল বিজ্ঞাপন SDK-এর জন্য একটি বিডিং অ্যাডাপ্টার তৈরি করতে, আপনাকে অবশ্যই RtbAdapter
অ্যাবস্ট্রাক্ট ক্লাস প্রসারিত করতে হবে। নিম্নলিখিত বিভাগগুলি RtbAdapter
এ প্রতিটি বিমূর্ত পদ্ধতি ব্যাখ্যা করে।
getSDKVersionInfo()
এখানে আপনার SDK-এর সংস্করণ ফেরত দেওয়া উচিত। OpenRTB অনুরোধের অংশ হিসেবে এই সংস্করণটি আপনার দরদাতার কাছে পাঠানো হয়েছে।
এই পদ্ধতিতে আপনাকে একটি VersionInfo
ফেরত দিতে হবে। নীচের উদাহরণটি দেখায় যে আপনি কীভাবে আপনার SDK-এর স্ট্রিং সংস্করণটিকে একটি VersionInfo.
@Override
public VersionInfo getSDKVersionInfo() {
// Get your SDK's version as a string. E.g. "1.2.3"
// String versionString = YourSdk.getVersion();
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);
}
String logMessage = String.format("Unexpected SDK version format: %s." +
"Returning 0.0.0 for SDK version.", sdkVersion);
Log.w(TAG, logMessage);
return new VersionInfo(0, 0, 0);
}
getVersionInfo()
এখানে আপনার অ্যাডাপ্টারের সংস্করণ ফেরত দেওয়া উচিত। OpenRTB অনুরোধের অংশ হিসেবে এই সংস্করণটি আপনার দরদাতার কাছে পাঠানো হয়েছে।
Google এর ওপেন সোর্স এবং সংস্করণযুক্ত অ্যাডাপ্টারগুলি একটি 4-সংখ্যার অ্যাডাপ্টার সংস্করণ স্কিম ব্যবহার করে, তবে VersionInfo
শুধুমাত্র 3 সংখ্যার জন্য অনুমতি দেয়৷ এটিকে ঘিরে কাজ করার জন্য, নীচে দেখানো হিসাবে প্যাচ সংস্করণে শেষ দুটি সংখ্যা একত্রিত করার পরামর্শ দেওয়া হচ্ছে।
@Override
public VersionInfo getVersionInfo() {
// Get your adapters's version as a string. E.g. "1.2.3.0"
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);
}
String logMessage = String.format("Unexpected adapter version format: %s." +
"Returning 0.0.0 for adapter version.", versionString);
Log.w(TAG, logMessage);
return new VersionInfo(0, 0, 0);
}
আরম্ভ করা()
সময়সীমা: 30 সেকেন্ড
initialize()
পদ্ধতিটি আপনার অ্যাডাপ্টারে বলা প্রথম পদ্ধতি। এটি প্রতি সেশনে শুধুমাত্র একবার বলা হয়। এই পদ্ধতিটি আপনাকে MediationConfiguration
অবজেক্টের একটি তালিকা প্রদান করে যা এই অ্যাপে আপনার বিজ্ঞাপন নেটওয়ার্কের জন্য কনফিগার করা প্লেসমেন্টের সম্পূর্ণ তালিকা উপস্থাপন করে; আপনি প্রতিটি প্লেসমেন্টের জন্য শংসাপত্রগুলি পার্স করতে এই তালিকাটি লুপ করতে পারেন এবং প্রারম্ভিকতার জন্য আপনার SDK-এ প্রাসঙ্গিক ডেটা পাঠাতে পারেন৷
একবার আপনার SDK আরম্ভ হয়ে গেলে এবং বিজ্ঞাপনের অনুরোধ পাওয়ার জন্য প্রস্তুত হলে, InitializationCompleteCallback
এর onInitializationSucceeded()
পদ্ধতি ব্যবহার করুন। এই কলব্যাকটি অ্যাপ প্রকাশকদের কাছে ফরোয়ার্ড করা হয় যাতে তারা জানতে পারে তারা বিজ্ঞাপন লোড করা শুরু করতে পারে।
@Override
public void initialize(Context context,
InitializationCompleteCallback initializationCompleteCallback,
List<MediationConfiguration> mediationConfigurations) {
// Initialize your ad network's SDK.
...
// Invoke the InitializationCompleteCallback once initialization completes.
initializationCompleteCallback.onInitializationSucceeded();
}
সংকেত সংগ্রহ ()
সময়সীমা: 1 সেকেন্ড
প্রতিবার প্রকাশক বিজ্ঞাপনের জন্য অনুরোধ করলে, আপনার RtbAdapter
এর একটি নতুন উদাহরণ তৈরি করা হয় এবং collectSignals()
পদ্ধতি বলা হয়। RtbAdapter
এর এই উদাহরণটি সেই বিজ্ঞাপনের অনুরোধ, প্রতিক্রিয়া এবং রেন্ডারিং লাইফসাইকেলের সময়কালের জন্য ব্যবহার করা হবে। collectSignals()
পদ্ধতি আপনার অ্যাডাপ্টারকে একটি OpenRTB অনুরোধে আপনার বিডারকে পাঠানোর জন্য ডিভাইস থেকে সংকেত প্রদান করতে সক্ষম করে।
collectSignals()
কে একটি ব্যাকগ্রাউন্ড থ্রেড বলা হয়। Google মোবাইল বিজ্ঞাপন SDK একই সাথে বিডিংয়ে অংশগ্রহণকারী সমস্ত অ্যাডাপ্টারের কাছ থেকে সংকেত চায়৷ অনুগ্রহ করে সম্মান করুন এবং এই সময়ের মধ্যে UI থ্রেডে কল সীমিত করুন। সংকেত সংগ্রহ করার জন্য আপনার অ্যাডাপ্টার বা SDK-কে যে কোনও ভারী কাজ করতে হবে তা initialize()
পদ্ধতিতে করা উচিত এবং ক্যাশে করা উচিত।
একবার আপনার সিগন্যাল প্রস্তুত হয়ে গেলে, আপনার এনকোড করা সংকেত সহ onSuccess()
কলব্যাকে কল করুন।
এখানে একটি উদাহরণ বাস্তবায়ন:
@Override
public void collectSignals(RtbSignalData rtbSignalData,
SignalCallbacks signalCallbacks) {
String signals = YourSdk.getSignals();
signalCallbacks.onSuccess(signals);
}
আপনার অ্যাডাপ্টার সংকেত সংগ্রহ করতে ব্যর্থ হলে, যে ত্রুটি ঘটেছে তা ব্যাখ্যা করে একটি স্ট্রিং সহ signalCallbacks.onFailure()
এ কল করুন।
বিজ্ঞাপন লোডিং পদ্ধতি প্রয়োগ করুন
সময়সীমা: 10 সেকেন্ড
আপনার দরদাতা বিজয়ী বিড ফেরত দিলে, Google মোবাইল বিজ্ঞাপন SDK বিজয়ী বিজ্ঞাপনটি লোড করার জন্য আপনার অ্যাডাপ্টারকে কল করে, আপনার দরদাতা যে ডেটা ফেরত দিয়েছে তা আপনাকে পাস করে যেটি আপনার SDK-এর সেই বিজ্ঞাপনটি লোড করতে হবে।
সঠিক লোড পদ্ধতি যা বলা হয় তা নির্ভর করে এই অনুরোধের জন্য বিজ্ঞাপন বিন্যাসের উপর:
বিজ্ঞাপন বিন্যাস | লোড পদ্ধতি |
---|---|
ব্যানার | loadBannerAd() |
ইন্টারস্টিশিয়াল | loadInterstitialAd() |
পুরস্কৃত | loadRewardedAd() |
আপনার অ্যাডাপ্টার সমর্থন করে এমন বিজ্ঞাপন ফর্ম্যাটের জন্য এই পদ্ধতিগুলি প্রয়োগ করুন৷
লোড পদ্ধতিটি UI থ্রেডে বলা হয়, যে অ্যাডাপ্টার থেকে আপনি সংকেত প্রদান করেছেন তার একই উদাহরণে। এই পদ্ধতি আপনাকে নিম্নলিখিত পরামিতি প্রদান করে:
একটি
MediationAdConfiguration
, যাতে আপনার SDK-এর বিজয়ী বিডের জন্য বিজ্ঞাপন লোড করার জন্য প্রয়োজনীয় প্যারামিটার রয়েছে, যেমন বিড প্রতিক্রিয়া এবং AdMob UI-তে প্রকাশক কনফিগার করা যেকোনো প্রমাণপত্র।একটি
MediationAdLoadCallback
অবজেক্ট লোডিং সফল বা ব্যর্থ হলে Google মোবাইল বিজ্ঞাপন SDK-কে অবহিত করতে ব্যবহৃত হয়।
একবার আপনার SDK বিজ্ঞাপনটি লোড করলে, mediationAdLoadCallback.onSuccess()
কে কল করুন। ইভেন্টে বিজ্ঞাপন লোডিং ব্যর্থ হলে, যে ত্রুটি ঘটেছে তা ব্যাখ্যা করে একটি স্ট্রিং সহ mediationAdLoadCallback.onFailure()
এ কল করুন।
mediationAdLoadCallback.onSuccess()
পদ্ধতির জন্য আপনাকে এমন একটি বস্তুতে পাস করতে হবে যা Google মোবাইল বিজ্ঞাপন SDK দ্বারা সংজ্ঞায়িত "বিজ্ঞাপন" ইন্টারফেসের একটি নিশ্চিত করে৷ এই বিজ্ঞাপন ইন্টারফেস আপনাকে বিজ্ঞাপন সম্পর্কে কিছু তথ্য প্রদান করতে বলে।
MediationAdConfiguration
একটি getWatermark()
পদ্ধতিও রয়েছে যা একটি PNG চিত্রকে উপস্থাপন করে একটি base64-এনকোডেড স্ট্রিং ফেরত দিতে পারে। এই ছবিটি আপনার বিজ্ঞাপনে একটি স্বচ্ছ ওভারলেতে টাইল করা উচিত। কিভাবে ওয়াটারমার্ক রেন্ডার করতে হয় সে সম্পর্কে অতিরিক্ত নির্দেশনার জন্য Google-এর সাথে যোগাযোগ করুন। এটিতে দেখানো বিজ্ঞাপনের উত্স নির্ধারণ করতে প্রকাশকদের দ্বারা ব্যবহারের জন্য দেখানো বিজ্ঞাপন সম্পর্কে মেটাডেটা রয়েছে৷
ব্যানারের জন্য, আপনাকে ব্যানার ভিউ প্রদান করতে বলা হবে। ইন্টারস্টিশিয়াল এবং পুরস্কৃত বিজ্ঞাপনের জন্য, আপনাকে পরবর্তী সময়ে বিজ্ঞাপন দেখানোর জন্য একটি show()
পদ্ধতি প্রয়োগ করতে বলা হবে। একটি সর্বোত্তম অনুশীলন হিসাবে, আমরা সুপারিশ করি যে আপনার ক্লাসটি বিজ্ঞাপন লোডিংকেও এই বিজ্ঞাপন পদ্ধতিগুলি বাস্তবায়নের জন্য দায়ী করবে৷
নিম্নলিখিত loadBannerAd()
এর একটি নমুনা বাস্তবায়ন। মনে রাখবেন যে আপনার অ্যাডাপ্টারের বাস্তবায়ন ভিন্ন দেখাবে, কারণ আপনার অ্যাডাপ্টার একটি ভিন্ন SDK এর সাথে একত্রিত হয়।
public final class SampleRtbAdapter extends RtbAdapter {
...
@Override
public void loadBannerAd(
MediationBannerAdConfiguration adConfiguration,
MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> callback) {
SampleBannerRenderer bannerRenderer =
new SampleBannerRenderer(adConfiguration, callback);
bannerRenderer.render();
}
}
// Renders a banner ad, and forwards callbacks to the Google Mobile Ads SDK.
public class SampleBannerRenderer implements MediationBannerAd {
private MediationBannerAdConfiguration adConfiguration;
private final MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> adLoadCallback;
private AdView adView;
private MediationBannerAdCallback callback;
public SampleRtbBannerRenderer(
MediationBannerAdConfiguration adConfiguration,
MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> adLoadCallback) {
this.adConfiguration = adConfiguration;
this.adLoadCallback = adLoadCallback;
}
public void render() {
adView = new AdView(adConfiguration.getContext());
adView.setAdSize(adConfiguration.getAdSize());
// serverParameters are the parameters entered in the AdMob UI for your network.
adView.setAdUnitId(adConfiguration.getServerParameters().getString("adUnitId"));
// Map the callbacks from your SDK to Google's SDK.
adView.setAdListener(new AdListener() {
// See the next step for more information on callback mapping.
// ...
});
// Get the bid response and watermark from the ad configuration and
// pass the relevant information to your SDK.
String ad = adConfiguration.getBidResponse();
String watermark = adConfiguration.getWatermark();
Bundle extras = new Bundle();
extras.putString("bid", ad);
extras.putString("watermark", watermark);
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
adView.loadAd(request);
}
// MediationBannerAd implementation
@NonNull
@Override
public View getView() {
return adView;
}
}
রিলে বিজ্ঞাপন উপস্থাপনা জীবনচক্র ঘটনা
অ্যাডাপ্টারের চূড়ান্ত দায়িত্ব হল যেকোন প্রেজেন্টেশন লাইফসাইকেল ইভেন্টের জন্য Google মোবাইল বিজ্ঞাপন SDK-কে অবহিত করা, যাতে সেগুলি প্রকাশকের কাছে পাঠানো যায়। কোন বিজ্ঞাপন নেটওয়ার্ক বিজ্ঞাপন পরিবেশন করুক না কেন প্রকাশক নির্দিষ্ট সময়ে এই কলব্যাকগুলি আশা করে, তাই এটি গুরুত্বপূর্ণ যে এই কলব্যাকগুলির মধ্যে যতটা সম্ভব এবং সঠিক সময়ে আহ্বান করা হয়, যাতে Google মোবাইল বিজ্ঞাপন SDK সেগুলি প্রকাশকের কাছে ফরোয়ার্ড করতে পারে .
অ্যাডাপ্টারগুলি প্রযোজ্য হলে নিম্নলিখিত ইভেন্টগুলিকে আহ্বান করা উচিত:
সব ফরম্যাটে সাধারণ | |
---|---|
পদ্ধতি | কখন ফোন করতে হবে |
reportAdClicked() | বিজ্ঞাপনে ক্লিক করা হয়েছে। |
reportAdImpression() | বিজ্ঞাপন একটি ছাপ রেন্ডার. |
onAdOpened() | বিজ্ঞাপনটি একটি পূর্ণ পর্দা দৃশ্য উপস্থাপন করেছে। |
onAdClosed() | বিজ্ঞাপনের পূর্ণ স্ক্রীন ভিউ বন্ধ করা হয়েছে। |
onAdLeftApplication() | বিজ্ঞাপনের কারণে ব্যবহারকারী অ্যাপ্লিকেশনটি ছেড়ে চলে যান। |
পুরস্কৃত বিজ্ঞাপন | |
onRewarded() | ব্যবহারকারী একটি পুরস্কার মঞ্জুর করা হয়. |
ভিডিও কলব্যাক (পুরস্কৃত এবং নেটিভ বিজ্ঞাপন) | |
onVideoStarted() | বিজ্ঞাপনের ভিডিও শুরু হলো। |
onVideoCompleted() | বিজ্ঞাপনটির ভিডিও সম্পন্ন হয়েছে। |
mediationAdLoadCallback.onSuccess()
কল করলে অ্যাডাপ্টারটি একটি MediationAdLoadCallback<MediationAdT, MediationAdCallbackT>
বস্তু ফিরে পায়। অ্যাডাপ্টারগুলি এই বস্তুটিকে ধরে রাখবে এবং আপনার বিজ্ঞাপনে ঘটে যাওয়া উপস্থাপনা ইভেন্টগুলিকে আহ্বান করতে এটি ব্যবহার করবে বলে আশা করা হচ্ছে৷
সাধারণত, এই ইভেন্টগুলির বেশিরভাগই আপনার বিজ্ঞাপন নেটওয়ার্কের SDK দ্বারা চালিত হয়। অ্যাডাপ্টারের ভূমিকা হল আপনার বিজ্ঞাপন নেটওয়ার্ক SDK থেকে Google মোবাইল বিজ্ঞাপন SDK-তে কলব্যাকগুলি ম্যাপ করা।
নিম্নলিখিত উদাহরণটি দেখায় যে আপনি কীভাবে আপনার SDK-এর বিজ্ঞাপন শ্রোতা থেকে Google Mobile Ads SDK-এ কলব্যাক ফরওয়ার্ড করবেন:
adView.setAdListener(new AdListener() {
public void onAdLoaded() {
callback = adLoadCallback.onSuccess(SampleBannerRenderer.this);
}
public void onAdImpression() {
if (callback != null) {
callback.reportAdImpression();
}
}
public void onAdFailedToLoad(LoadAdError adError) {
adLoadCallback.onFailure("Error: " + adError.toString());
}
public void onAdClosed() {
if (callback != null) {
callback.onAdClosed();
}
}
public void onAdOpened() {
if (callback != null) {
callback.onAdOpened();
callback.reportAdClicked();
}
}
public void onAdLeftApplication() {
if (callback != null) {
callback.onAdLeftApplication();
}
}
});
নেটিভ বিজ্ঞাপন ইম্প্রেশন ট্র্যাকিংয়ের জন্য প্রয়োজনীয় সম্পদ
Google মোবাইল বিজ্ঞাপন SDK একটি নেটিভ বিজ্ঞাপনের জন্য একটি ইম্প্রেশন রেকর্ড করে যখন বিজ্ঞাপনের 1 পিক্সেল দৃশ্যমান হয়। যদি আপনার বিজ্ঞাপন নেটওয়ার্ক SDK-এর একটি বৈধ ইম্প্রেশন রেন্ডার করার জন্য নির্দিষ্ট সম্পদ প্রদর্শনের প্রয়োজন হয়, তাহলে আপনার বিডার বিড প্রতিক্রিয়াতে এই প্রয়োজনীয় নেটিভ সম্পদগুলি নির্দেশ করতে পারে। Google মোবাইল বিজ্ঞাপন SDK তারপর যাচাই করে যে আপনার প্রয়োজনীয় নেটিভ সম্পদগুলি একটি ইমপ্রেশন রেকর্ড করার আগে প্রদর্শিত হয়।
বিড প্রতিক্রিয়ায় অতিরিক্ত প্রয়োজনীয় সম্পদ কীভাবে নির্দিষ্ট করতে হয় সে সম্পর্কে আরও তথ্যের জন্য নেটিভ প্রয়োজনীয় সম্পদের ডকুমেন্টেশন দেখুন।
বিজ্ঞাপন ত্রুটি দেখান
পূর্ণ স্ক্রীন ফর্ম্যাটের জন্য, যেমন ইন্টারস্টিশিয়াল এবং পুরস্কৃত বিজ্ঞাপন, সফল লোড কলব্যাকে আপনি একটি বাস্তবায়ন প্রদান করবেনMediationInterstitialAd
বা MediationRewardedAd
যাতে Google মোবাইল বিজ্ঞাপন SDK আপনার অ্যাডাপ্টারকে বিজ্ঞাপনটি দেখাতে বলতে পারে৷
Google মোবাইল বিজ্ঞাপন SDK আশা করে যে যদি একটি অ্যাডাপ্টার সফলভাবে একটি বিজ্ঞাপন লোড করে, প্রকাশক যখন এটি দেখাতে বলে তখন বিজ্ঞাপনটি দেখানোর জন্য প্রস্তুত থাকে। এর মানে হল যে প্রতিটি শো কলের একটি ইমপ্রেশন হতে হবে।
যাইহোক, কোণার ক্ষেত্রে এমন হতে পারে যেখানে আপনি একটি বিজ্ঞাপন দেখাতে অক্ষম। আপনি বিজ্ঞাপন দেখাতে না পারলে, কল করুনonAdFailedToShow()
ইমপ্রেশন বাতিল করতে কলব্যাক করুন।
নীচের সারণীটি দেখায় কিভাবে উপস্থাপনা কলব্যাকগুলি পূর্ণ স্ক্রীন বিজ্ঞাপন বিন্যাসের জন্য ইম্প্রেশন রেকর্ডিংকে প্রভাবিত করে:
কলব্যাক | ফলাফল |
---|---|
onAdOpened() | Impression recorded |
onAdFailedToShow() | Impression failure 1 |
কয়েক সেকেন্ডের জন্য উপরের কোনটি নয় | Impression recorded |
1 ব্যর্থ ইম্প্রেশনের জন্য, আপনার বিজ্ঞাপন নেটওয়ার্ক ইম্প্রেশনের জন্য চার্জ করা হয় না, তবে এটি আপনার বিলযোগ্য ইভেন্ট রেট সমন্বয়কে প্রভাবিত করে। আরো তথ্যের জন্য বিড অনুরোধ সংকেত দেখুন.
নিম্নলিখিত উপহাস উদাহরণ একটি লোড/শো লাইফসাইকেল দেখায় যেখানে একটি বিজ্ঞাপন শো কল ব্যর্থ হতে পারে।
final class SampleRtbAdapter extends RtbAdapter implements MediationRewardedAd {
private MediationRewardedAdCallback callback;
private RewardedAd rewardedAd;
...
@Override
public void loadRewardedAd(
MediationRewardedAdConfiguration adConfiguration,
final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> loadCallback) {
// Load an ad. This mock example uses Google's SDK, but in practice
// your adapter will load the ad using your ad network's SDK.
RewardedAd.load(adConfiguration.getContext(),
"ca-app-pub-3940256099942544/5224354917",
new AdRequest.Builder().build(),
new RewardedAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// When the ad loads, invoke the load success callback.
callback = loadCallback.onSuccess(SampleRtbAdapter.this);
}
});
}
@Override
public void showAd(Context context) {
// In this mock example, your ad network requires an activity context, but
// didn't receive one, making you unable to show the ad.
if (!(context instanceof Activity)) {
AdError error = new AdError(1, "Context must be an activity",
"com.google.ads.mediation.sample");
callback.onAdFailedToShow(error);
}
// This example shows Google SDK's callbacks, but it's likely your SDK
// has similar presentation callbacks.
rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Your ad network SDK successfully showed the ad. Call onAdOpened().
callback.onAdOpened();
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Your ad network SDK failed to show the ad, invoke onAdFailedToShow.
// In practice, you will map your SDK's error to an AdError.
AdError error = new AdError(adError.getCode(), adError.getMessage(),
adError.getDomain());
callback.onAdFailedToShow(adError);
}
});
rewardedAd.show((Activity) context, ...);
}
}