পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন হল এমন একটি ফর্ম্যাট যা আপনাকে এমন বিজ্ঞাপনের জন্য পুরস্কার অফার করার সুযোগ দেয় যা অ্যাপের স্বাভাবিক ট্রানজিশনের সময় অটোমেটিক দেখানো হয়। পুরস্কার প্রদানকারী বিজ্ঞাপনের মতো, পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখার জন্য ব্যবহারকারীকে অপ্ট-ইন করতে হয় না। আরও তথ্যের জন্য, পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল সংক্রান্ত নির্দেশিকা দেখুন।
এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে কীভাবে Android অ্যাপে পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন ইন্টিগ্রেট করতে হয়।
শুরু করার আগে
চালিয়ে যাওয়ার আগে, নিম্নলিখিত কাজগুলি করুন:
- GMA Next-Gen SDK সেট-আপ করুন।
- টেস্ট পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন
ইউনিট আইডি
ca-app-pub-3940256099942544/5354046379ব্যবহার করুন।- আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন কিনা তা নিশ্চিত করুন। আপনি টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার না করলে, Google আপনার অ্যাকাউন্ট সাসপেন্ড করতে পারে।
- আপনার অ্যাপ প্রকাশ করার আগে, এই আইডিটি আপনার বিজ্ঞাপন ইউনিট আইডি দিয়ে পরিবর্তন করুন।
- GMA Next-Gen SDK টেস্ট বিজ্ঞাপন সম্পর্কে আরও জানতে, টেস্ট বিজ্ঞাপন চালু করুন বিকল্প দেখুন।
বিজ্ঞাপন প্রিলোড করা (বিটা) সম্পর্কে বোঝা
GMA Next-Gen SDK-এ বিজ্ঞাপন প্রিলোড করার সুবিধা বিজ্ঞাপন লোড ও ক্যাশ করার প্রসেস অটোমেট করে।
বিজ্ঞাপন প্রিলোড করার সুবিধাগুলি নিচে উল্লেখ করা হল:
- রেফারেন্স ম্যানেজমেন্ট: বিজ্ঞাপন না দেখানো পর্যন্ত রেফারেন্স বজায় রাখে।
- অটোমেটিক রিলোড করা: ক্যাশে থেকে কোনও বিজ্ঞাপন ফিরিয়ে আনা হলে নতুন বিজ্ঞাপন লোড করে।
- ম্যানেজ করা রিট্রাই: কোনও বিজ্ঞাপন লোড না হলে নতুন বিজ্ঞাপন লোড করে।
- মেয়াদ শেষ হওয়া ম্যানেজ করা: মেয়াদ শেষ হওয়ার আগে বিজ্ঞাপন রিফ্রেশ করে।
- ক্যাশে অপ্টিমাইজেশন: সবচেয়ে বেশি অগ্রাধিকার পাওয়া বিজ্ঞাপন ডেলিভার করার জন্য ক্যাশে অর্ডার অপ্টিমাইজ করে।
বিজ্ঞাপন প্রিলোড করা শুরু করুন
বিজ্ঞাপন প্রিলোড করা শুরু করতে, GMA Next-Gen SDK শুরু করার সময়
একবার start মেথড কল করুন। আপনি
start মেথড কল করার পরে, GMA Next-Gen SDK অটোমেটিক বিজ্ঞাপন প্রিলোড করে
এবং প্রিলোড করা কনফিগারেশনের জন্য ব্যর্থ অনুরোধ আবার চেষ্টা করে।
বিজ্ঞাপন প্রিলোড করা কীভাবে শুরু করবেন তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
Java
AD_UNIT_ID-এর জায়গায় আপনার বিজ্ঞাপন ইউনিট আইডি লিখুন।
আগের উদাহরণে দেখানো হয়েছে যে কীভাবে বিজ্ঞাপন ইউনিট আইডিকে প্রিলোড আইডি হিসেবে ব্যবহার করতে হয়। প্রি-লোড আইডি হল একটি স্ট্রিং শনাক্তকারী যা আপনি একটি বিজ্ঞাপন প্রি-লোডিং কনফিগারেশন শনাক্ত করার জন্য তৈরি করেন। একই বিজ্ঞাপন ইউনিট আইডির জন্য আপনার অ্যাপে একাধিক টার্গেটিং কনফিগারেশনের প্রয়োজন হলে, কাস্টম স্ট্রিং আইডেন্টিফায়ার পাস করুন।
বিজ্ঞাপন প্রিলোড করার সময় টার্গেটিং প্যারামিটার বা বিজ্ঞাপনের অনুরোধ পরিবর্তন করা যায় না। অনুরোধের মধ্যে টার্গেটিং প্যারামিটার পরিবর্তন করতে হলে, সিঙ্গেল লোডিং ব্যবহার করুন।
প্রিলোড করা বিজ্ঞাপন পান ও দেখান
বিজ্ঞাপন দেখানোর আগে, pollAd মেথড কল করুন।
প্রিলোড করা বিজ্ঞাপন অবজেক্ট স্টোর করবেন না। আপনি
pollAd মেথড কল করলে, GMA Next-Gen SDK উপলভ্য বিজ্ঞাপন ফিরিয়ে আনে
এবং ব্যাকগ্রাউন্ডে অটোমেটিক পরবর্তী বিজ্ঞাপন প্রিলোড করে। কোনও বিজ্ঞাপন উপলভ্য না থাকলে, GMA Next-Gen SDK কোনও বিজ্ঞাপন দেখায় না।
show মেথড কল করুন।
পুরস্কার ইভেন্ট ম্যানেজ করতে পুরস্কার লিসনার ব্যবহার করুন। নিম্নলিখিত উদাহরণ থেকে জানতে পারবেন যে কীভাবে
প্রিলোড করা বিজ্ঞাপন ফিরিয়ে আনা ও দেখানো যায়:
Kotlin
Java
আপনার অ্যাপ কোনও বিজ্ঞাপনের প্লেসমেন্টে পৌঁছালে এবং show মেথড কল করতে পারলে, pollAd মেথড কল করুন। প্রিলোড কলব্যাকে বা কোনও বিজ্ঞাপন হোল্ড করার জন্য
isAdAvailable পদ্ধতি চেক করার পরে
pollAd পদ্ধতি কল করবেন না। বিজ্ঞাপন দেখানোর আগে
আপনাকে যদি বিজ্ঞাপনের মেটাডেটা পরীক্ষা করতে হয়,
তাহলে ক্যাশে থেকে বিজ্ঞাপন না সরিয়ে উত্তরের তথ্য পড়ুন।
বিজ্ঞাপন ইভেন্ট শুনুন
বিজ্ঞাপন দেখানোর আগে, বিজ্ঞাপন ইভেন্ট শুনুন। নিম্নলিখিত উদাহরণটি বিজ্ঞাপন ইভেন্টের জন্য কলব্যাক রেজিস্টার করে:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedInterstitialAd if (ad == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet.") return } ad.adEventCallback = object : RewardedInterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded interstitial ad failed to show. Log.e(TAG, "Rewarded interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded interstitial ad did record an impression. } override fun onAdClicked() { // Rewarded interstitial ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (rewardedInterstitialAd == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet."); return; } rewardedInterstitialAd.setAdEventCallback( new RewardedInterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Rewarded interstitial ad failed to show. Log.e( TAG, "Rewarded interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded interstitial ad did record an impression. } @Override public void onAdClicked() { // Rewarded interstitial ad did record a click. } }); }
ঐচ্ছিক: সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাক যাচাই করা
সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাকে ব্যবহারকারী ও অ্যাপ্লিকেশনের প্রসঙ্গ পাস করতে, বিজ্ঞাপন দেখানোর আগে বিজ্ঞাপন অবজেক্টে যাচাইকরণের বিকল্প সেট করুন। কারণ SSV কলব্যাক সেশন স্টেট ছাড়াই Google থেকে আপনার সার্ভারে আসে, নিম্নলিখিত ঐচ্ছিক স্ট্রিং অ্যাটাচ করুন। Google এই স্ট্রিংগুলি SSV কলব্যাকে স্বাক্ষরিত কোয়েরি প্যারামিটার হিসেবে অপরিবর্তিত অবস্থায় ফরওয়ার্ড করে।
user_idকোয়েরি প্যারামিটার: ক্রেডিট করার জন্য ব্যবহারকারীকে শনাক্ত করে, যেমন ইন্টার্নাল অ্যাকাউন্ট আইডি।custom_dataকোয়েরি প্যারামিটার: অ্যাপ ডেটা বহন করে, যেমন পুরস্কারের প্লেসমেন্ট, গেম লেভেল বা সার্ভার-জেনারেটেড ননস।
আপনি কোনও ভ্যালু সেট না করলে, Google সেই কোয়েরি প্যারামিটার SSV কলব্যাক থেকে বাদ দেয়।
নিম্নলিখিত উদাহরণটি বিজ্ঞাপন দেখানোর আগে বিজ্ঞাপন অবজেক্টে কাস্টম ডেটা সেট করে:
Kotlin
Java
SAMPLE_CUSTOM_DATA_STRING-এর জায়গায় আপনার কাস্টম
ডেটা লিখুন।
গুরুত্বপূর্ণ পয়েন্ট: custom_data কোয়েরি প্যারামিটার হল
পার্সেন্ট-এনকোডেড। আপনি
ভ্যালু পার্স করার আগে, আপনার সার্ভারে স্ট্রিং URL-ডিকোড করুন এবং user_id বা custom_data কোয়েরি প্যারামিটার বিশ্বাস করার আগে কলব্যাক
স্বাক্ষর যাচাই করুন।
ঐচ্ছিক: প্রিলোডিং ইভেন্ট শুনুন
বিজ্ঞাপন প্রিলোড করা শুরু করলে, প্রিলোড ইভেন্টের জন্য রেজিস্টার করুন যাতে বিজ্ঞাপন প্রিলোড করা সম্পূর্ণ হলে, প্রিলোড করা না গেলে অথবা বিজ্ঞাপনের ক্যাশে শেষ হয়ে গেলে আপনি বিজ্ঞপ্তি পান।
বিজ্ঞাপন ইভেন্ট প্রিলোড করার জন্য কীভাবে রেজিস্টার করতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
val preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d( TAG, "Rewarded interstitial preload ad $preloadId failed to load with error: ${adError.message}", ) } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "Rewarded interstitial preload ad $preloadId is not available") // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "Rewarded interstitial preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "Rewarded interstitial preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); // [Optional] Get the error response info for additional details. // ResponseInfo responseInfo = adError.getResponseInfo(); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, "Rewarded interstitial preload ad " + preloadId + " is not available"); // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, "Rewarded interstitial preload ad " + preloadId + " is available"); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
কোনও বিজ্ঞাপন লোড না হলে, GMA Next-Gen SDK অটোমেটিক বিজ্ঞাপন প্রিলোড করে এবং প্রিলোড করা কনফিগারেশনের জন্য
ব্যর্থ অনুরোধ আবার চেষ্টা করে। ব্যর্থ কলব্যাকে ম্যানুয়াল লোড
অনুরোধ করবেন না। প্রিলোড ইভেন্ট কলব্যাক পদ্ধতিতে,
pollAd, destroy বা
start পদ্ধতি কল করবেন না। কলব্যাকে এইসব পদ্ধতি কল করলে
রিকার্সিভ লোড লুপ ইনভোক হতে পারে।
ঐচ্ছিক: বিজ্ঞাপন উপলভ্য কিনা তা চেক করা
কোনও বিজ্ঞাপন উপলভ্য আছে কিনা তা জানতে হলে, বিজ্ঞাপনের উপলভ্যতা চেক করুন। নিম্নলিখিত উদাহরণটি প্রিলোড করা বিজ্ঞাপন উপলভ্য কিনা তা চেক করে:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return RewardedInterstitialAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return RewardedInterstitialAdPreloader.isAdAvailable(adUnitId); }
ঐচ্ছিক: বাফার সাইজ সেট করুন
বাফার সাইজ মেমরিতে থাকা প্রি-লোড করা বিজ্ঞাপনের সংখ্যা নিয়ন্ত্রণ করে। ডিফল্ট হিসেবে, Google মেমরি খরচ ও বিজ্ঞাপন পরিষেবা দেওয়ার লেটেন্সি ব্যালেন্স করতে বাফার সাইজ অপ্টিমাইজ করে। মেমরিতে রাখা বিজ্ঞাপনের সংখ্যা বাড়াতে বা কমাতে আপনি কাস্টম বাফার সাইজ সেট করতে পারেন। আমরা দুটি প্রি-লোড করা বিজ্ঞাপনের বাফার সাইজ সাজেস্ট করি। আপনার ট্রাফিকের বেশিরভাগই যদি কম মেমরির ডিভাইস থেকে আসে, তাহলে বাফারের সাইজ কমিয়ে দিন।
বাফার সাইজ কীভাবে সেট করতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
private fun setBufferSize(adUnitId: String) { val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig) }
Java
private void setBufferSize(String adUnitId) { AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig); }
প্রিলোড ক্যাশে সীমা
GMA Next-Gen SDK সমস্ত বিজ্ঞাপন ইউনিট এবং প্রিলোড আইডি জুড়ে প্রিলোড করা বিজ্ঞাপনের মোট সংখ্যার উপর অ্যাপ-ব্যাপী সীমা প্রয়োগ করে:
- ডিফল্ট সীমা: Google মেমরিতে সর্বাধিক ছয়টি প্রিলোড করা বিজ্ঞাপন রাখে। এই সীমা সব ফর্ম্যাট ও প্রিলোড আইডি জুড়ে শেয়ার করা হয়।
- প্রতিটি প্রিলোড আইডির জন্য আমরা বাফার সাইজ দুই রাখার সাজেশন দিই।
ঐচ্ছিক: বিজ্ঞাপন প্রি-লোড করা বন্ধ করুন
আপনার অ্যাপ বিজ্ঞাপন দেখানোর সময় প্রিলোড করার সুবিধা চালু রাখুন। এই সময়ের মধ্যে, destroy পদ্ধতি ব্যবহার করবেন না। সেশনে নির্দিষ্ট প্রিলোড আইডির জন্য আবার বিজ্ঞাপন দেখানোর প্রয়োজন না হলে, আপনি বিজ্ঞাপন প্রিলোড করা বন্ধ করতে পারেন। নির্দিষ্ট প্রিলোড আইডির জন্য
বিজ্ঞাপন লোড করা বন্ধ করতে, প্রিলোড আইডির সাথে destroy
মেথড কল করুন। destroy পদ্ধতি কল করলে
ক্যাশে থেকে প্রিলোড আইডির সাথে যুক্ত সব প্রিলোড করা বিজ্ঞাপন সরিয়ে দেয়।
নিম্নলিখিত উদাহরণ থেকে বিজ্ঞাপন প্রি-লোড করা কীভাবে বন্ধ করতে হয় তা জানতে পারবেন:
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. RewardedInterstitialAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. RewardedInterstitialAdPreloader.destroy(adUnitId); }
ঐচ্ছিক: উত্তরের তথ্য পড়ুন
ক্যাশে থেকে বিজ্ঞাপন না সরিয়ে পরবর্তী প্রিলোড করা বিজ্ঞাপনের উত্তর সংক্রান্ত তথ্য পড়ুন। বিজ্ঞাপন দেখানোর আগে আপনাকে যদি বিজ্ঞাপন মেটাডেটা পরীক্ষা করতে হয়,
তাহলে pollAd
মেথড কল করার পরিবর্তে রেসপন্স সংক্রান্ত তথ্য পড়ুন।
পরবর্তী প্রিলোড করা বিজ্ঞাপন সংক্রান্ত উত্তর কীভাবে পড়তে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
val responseInfo = RewardedInterstitialAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
Java
ResponseInfo responseInfo = RewardedInterstitialAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());