অ্যাপ ওপেন অ্যাড হলো এমন একটি বিজ্ঞাপন ফরম্যাট, যা সেইসব পাবলিশারদের জন্য তৈরি করা হয়েছে যারা তাদের অ্যাপ লোড স্ক্রিন থেকে অর্থ উপার্জন করতে চান। অ্যাপ ওপেন অ্যাড যেকোনো সময় বন্ধ করা যায় এবং এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ব্যবহারকারীরা যখন আপনার অ্যাপটিকে ফোরগ্রাউন্ডে নিয়ে আসেন, তখন এটি দেখানো হয়।
আরও তথ্যের জন্য, অ্যাপ খোলার বিজ্ঞাপন নির্দেশিকা দেখুন।এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে কীভাবে একটি অ্যান্ড্রয়েড অ্যাপে অ্যাপ খোলার বিজ্ঞাপন যুক্ত করতে হয়।
শুরু করার আগে
চালিয়ে যাওয়ার আগে, নিম্নলিখিতগুলি করুন:
- GMA Next-Gen SDK সেট আপ করুন ।
- টেস্ট অ্যাপটি খুলতে
ca-app-pub-3940256099942544/9257395921অ্যাড ইউনিট আইডিটি ব্যবহার করুন।- আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ বা প্রোডাকশন অ্যাডের পরিবর্তে টেস্ট অ্যাড ব্যবহার করুন। আপনি যদি টেস্ট অ্যাড ইউনিট আইডি ব্যবহার না করেন, তাহলে গুগল আপনার অ্যাকাউন্ট সাসপেন্ড করতে পারে।
- আপনার অ্যাপটি প্রকাশ করার আগে, এই আইডিটি আপনার বিজ্ঞাপন ইউনিটের আইডি দিয়ে প্রতিস্থাপন করুন।
- GMA Next-Gen SDK টেস্ট অ্যাড সম্পর্কে বিস্তারিত জানতে, ‘টেস্ট অ্যাড সক্ষম করুন’ দেখুন।
বিজ্ঞাপন প্রি-লোডিং বুঝুন
GMA Next-Gen SDK এর অ্যাড প্রি-লোডিং ফিচারটি বিজ্ঞাপন লোডিং এবং ক্যাশিং প্রক্রিয়াকে স্বয়ংক্রিয় করে।
বিজ্ঞাপন প্রি-লোডিং নিম্নলিখিত সুবিধাগুলো প্রদান করে:
- রেফারেন্স ব্যবস্থাপনা : বিজ্ঞাপন প্রদর্শিত না হওয়া পর্যন্ত রেফারেন্সগুলো সংরক্ষণ করে।
- স্বয়ংক্রিয় রিলোডিং : ক্যাশে থেকে কোনো নতুন বিজ্ঞাপন পাওয়া গেলে সেটি লোড করে।
- নিয়ন্ত্রিত পুনঃপ্রচেষ্টা : একটি বিজ্ঞাপন লোড হতে ব্যর্থ হলে একটি নতুন বিজ্ঞাপন লোড করে।
- মেয়াদোত্তীর্ণতা ব্যবস্থাপনা : মেয়াদ শেষ হওয়ার আগে বিজ্ঞাপনগুলো রিফ্রেশ করে।
- ক্যাশ অপ্টিমাইজেশন : সর্বোচ্চ অগ্রাধিকারের বিজ্ঞাপনটি সরবরাহ করার জন্য ক্যাশের ক্রমকে অপ্টিমাইজ করে।
বিজ্ঞাপন প্রি-লোডিং শুরু করুন
বিজ্ঞাপন প্রি-লোড করা শুরু করতে, অ্যাপ চালু হওয়ার সময় একবার startPreload() মেথডটি কল করুন। startPreload() মেথডটি কল করার পর, GMA Next-Gen SDK স্বয়ংক্রিয়ভাবে বিজ্ঞাপন প্রি-লোড করে এবং প্রি-লোড করা কনফিগারেশনের জন্য ব্যর্থ হওয়া অনুরোধগুলো পুনরায় চেষ্টা করে।
নিচের উদাহরণটি দেখায় কীভাবে বিজ্ঞাপন প্রি-লোড করা শুরু করতে হয়:
কোটলিন
জাভা
AD_UNIT_ID এর জায়গায় আপনার অ্যাড ইউনিট আইডি বসান।
পূর্ববর্তী উদাহরণে দেখানো হয়েছে কীভাবে অ্যাড ইউনিট আইডিকে প্রিলোড আইডি হিসেবে ব্যবহার করতে হয়। প্রিলোড আইডি হলো একটি স্ট্রিং আইডেন্টিফায়ার যা আপনি একটি অ্যাড প্রিলোডিং কনফিগারেশন শনাক্ত করার জন্য তৈরি করেন। যদি আপনার অ্যাপে একই অ্যাড ইউনিট আইডির জন্য একাধিক টার্গেটিং কনফিগারেশনের প্রয়োজন হয়, তাহলে একটি কাস্টম স্ট্রিং আইডেন্টিফায়ার পাস করুন।
আগে থেকে লোড করা বিজ্ঞাপনটি নিন এবং দেখান
যখন আপনি কোনো বিজ্ঞাপন দেখাতে চান, তখন pollAd() মেথডটি কল করুন। GMA Next-Gen SDK একটি উপলব্ধ বিজ্ঞাপন খুঁজে বের করে এবং স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে পরবর্তী বিজ্ঞাপনটি প্রি-লোড করে রাখে। যদি কোনো বিজ্ঞাপন উপলব্ধ না থাকে, তাহলে GMA Next-Gen SDK কোনো বিজ্ঞাপন প্রদর্শন করে না।
যখন আপনার কাছে একটি উপলব্ধ বিজ্ঞাপন অবজেক্ট থাকবে, তখন বিজ্ঞাপনটি প্রদর্শন করতে show মেথডটি কল করুন। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি আগে থেকে লোড করা বিজ্ঞাপন পুনরুদ্ধার এবং প্রদর্শন করতে হয়:
কোটলিন
জাভা
বিজ্ঞাপন দেখানোর জন্য প্রস্তুত না হওয়া পর্যন্ত pollAd() মেথডটি কল করা থেকে বিরত থাকুন। বিজ্ঞাপন না দেখিয়ে তার রেসপন্স ইনফো পড়ার জন্য, “Read the response info” দেখুন।
বিজ্ঞাপনের ঘটনাগুলো শুনুন
বিজ্ঞাপন দেখানোর আগে, বিজ্ঞাপনের ইভেন্টগুলো শুনুন। নিচের উদাহরণটিতে দেখানো হয়েছে কীভাবে বিজ্ঞাপনের ইভেন্টগুলোর জন্য কলব্যাক নিবন্ধন করতে হয়:
কোটলিন
private fun listenToAdEvents() { // Listen for ad events. val ad = appOpenAd if (ad == null) { Log.e(TAG, "App open ad is not ready yet.") return } ad.adEventCallback = object : AppOpenAdEventCallback { override fun onAdShowedFullScreenContent() { // App open ad did show. } override fun onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // App open ad did record an impression. } override fun onAdClicked() { // App open ad did record a click. } } }
জাভা
private void listenToAdEvents() { // Listen for ad events. if (appOpenAd == null) { Log.e(TAG, "App open ad is not ready yet."); return; } appOpenAd.setAdEventCallback( new AppOpenAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // App open ad did show. } @Override public void onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // App open ad did record an impression. } @Override public void onAdClicked() { // App open ad did record a click. } }); }
ঐচ্ছিক: প্রি-লোডিং ইভেন্টগুলি শুনুন
আপনি যখন বিজ্ঞাপন প্রি-লোড করা শুরু করবেন, তখন প্রি-লোড ইভেন্টের জন্য নিবন্ধন করুন, যাতে বিজ্ঞাপন সফলভাবে প্রি-লোড হলে, প্রি-লোড করতে ব্যর্থ হলে, বা বিজ্ঞাপনের ক্যাশে শেষ হয়ে গেলে আপনাকে জানানো হয়।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে বিজ্ঞাপন ইভেন্ট প্রি-লোড করার জন্য নিবন্ধন করতে হয়:
কোটলিন
val preloadCallback = object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "App open preload ad $preloadId is not available") } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "App open preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
জাভা
PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "App open preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, String.format("App open preload ad %s is not available", preloadId)); } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, String.format("App open preload ad %s is available", preloadId)); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
যখন কোনো বিজ্ঞাপন লোড হতে ব্যর্থ হয়, তখন GMA Next-Gen SDK স্বয়ংক্রিয়ভাবে বিজ্ঞাপনগুলো প্রি-লোড করে এবং প্রি-লোড করা কনফিগারেশনগুলোর জন্য ব্যর্থ অনুরোধগুলো পুনরায় চেষ্টা করে।
ঐচ্ছিক: বিজ্ঞাপনের প্রাপ্যতা যাচাই করুন।
কোনো বিজ্ঞাপন উপলব্ধ আছে কিনা তা জানতে, বিজ্ঞাপনের প্রাপ্যতা পরীক্ষা করুন। নিচের উদাহরণটিতে দেখানো হয়েছে কীভাবে আগে থেকে লোড করা কোনো বিজ্ঞাপন উপলব্ধ আছে কিনা তা পরীক্ষা করতে হয়:
কোটলিন
private fun isAdAvailable(adUnitId: String): Boolean { return AppOpenAdPreloader.isAdAvailable(adUnitId) }
জাভা
private boolean isAdAvailable(String adUnitId) { return AppOpenAdPreloader.isAdAvailable(adUnitId); }
ঐচ্ছিক: বাফার সাইজ সেট করুন
বাফার সাইজ মেমরিতে রাখা প্রি-লোডেড বিজ্ঞাপনের সংখ্যা নিয়ন্ত্রণ করে। ডিফল্টরূপে, গুগল মেমরি ব্যবহার এবং বিজ্ঞাপন পরিবেশনের বিলম্বের মধ্যে ভারসাম্য বজায় রাখতে বাফার সাইজ অপ্টিমাইজ করে। মেমরিতে রাখা বিজ্ঞাপনের সংখ্যা বাড়ানোর জন্য আপনি একটি কাস্টম বাফার সাইজ সেট করতে পারেন।
নিম্নলিখিত উদাহরণে দুটি প্রি-লোডেড বিজ্ঞাপনের বাফার সাইজ কীভাবে সেট করতে হয় তা দেখানো হয়েছে:
কোটলিন
val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) AppOpenAdPreloader.start(adUnitId, preloadConfig)
জাভা
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); AppOpenAdPreloader.start(adUnitId, preloadConfig);
প্রিলোড ক্যাশে সীমা
GMA Next-Gen SDK সমস্ত অ্যাড ইউনিট এবং প্রিলোড আইডি জুড়ে প্রিলোড করা বিজ্ঞাপনের মোট সংখ্যার উপর একটি অ্যাপ-ব্যাপী সীমা আরোপ করে:
- ডিফল্ট সীমা: গুগল মেমরিতে সর্বাধিক ছয়টি প্রি-লোডেড বিজ্ঞাপন ধারণ করে। এই সীমাটি সমস্ত ফরম্যাট এবং প্রি-লোড আইডি জুড়ে প্রযোজ্য।
- আমরা প্রতিটি প্রিলোড আইডির জন্য দুইয়ের একটি বাফার সাইজ রাখার পরামর্শ দিই।
ঐচ্ছিক: বিজ্ঞাপন প্রি-লোড করা বন্ধ করুন
সেশনে কোনো নির্দিষ্ট প্রিলোড আইডির জন্য যদি আপনার আর বিজ্ঞাপন দেখানোর প্রয়োজন না হয়, তাহলে আপনি বিজ্ঞাপন প্রিলোড করা বন্ধ করতে পারেন। কোনো নির্দিষ্ট প্রিলোড আইডির জন্য বিজ্ঞাপন লোড করা বন্ধ করতে, প্রিলোড আইডিটি দিয়ে destroy() মেথডটি কল করুন। destroy() মেথডটি কল করলে ক্যাশে থেকে সেই প্রিলোড আইডির সাথে যুক্ত সমস্ত প্রিলোড করা বিজ্ঞাপন মুছে যায়।
নিচের উদাহরণটি দেখায় কীভাবে বিজ্ঞাপন প্রি-লোডিং বন্ধ করতে হয়:
কোটলিন
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId) }
জাভা
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId); }
ঐচ্ছিক: প্রতিক্রিয়ার তথ্য পড়ুন।
ক্যাশ থেকে বিজ্ঞাপনটি না সরিয়েই পরবর্তী প্রি-লোডেড বিজ্ঞাপনের প্রতিক্রিয়া তথ্য পড়ুন।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে পরবর্তী প্রি-লোড করা বিজ্ঞাপনের প্রতিক্রিয়া তথ্য পড়তে হয়:
কোটলিন
val responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
জাভা
ResponseInfo responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
কোল্ড স্টার্ট এবং লোডিং স্ক্রিন
কোল্ড স্টার্ট ঘটে যখন আপনার অ্যাপ একেবারে নতুন করে চালু হয়, যেমন—যখন কোনো ব্যবহারকারী প্রথমবারের মতো আপনার অ্যাপটি খোলেন অথবা মেমরি বন্ধ হয়ে যাওয়ার পর। কোল্ড স্টার্টের সময়, সাথে সাথে দেখানোর জন্য আগে থেকে লোড করা কোনো অ্যাপ ওপেন অ্যাড থাকে না।
বিজ্ঞাপনের অনুরোধে বিলম্বের কারণে, অ্যাপ খোলার বিজ্ঞাপন প্রদর্শিত হওয়ার আগেই ব্যবহারকারীরা আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে পারেন। ব্যবহারকারীর খারাপ অভিজ্ঞতা এড়াতে, অ্যাপ অ্যাসেট লোড হওয়ার সময় শুধুমাত্র লোডিং স্ক্রিন থেকে অ্যাপ চালু করার সময় বিজ্ঞাপন দেখান। যদি অ্যাসেট লোডিং সম্পূর্ণ হয়ে যায় এবং বিজ্ঞাপন লোড হওয়ার আগেই ব্যবহারকারী মূল কন্টেন্টে পৌঁছে যান, তাহলে বিজ্ঞাপনটি দেখাবেন না।
অ্যাপের অ্যাসেটগুলো একটি ব্যাকগ্রাউন্ড থ্রেডে লোড করুন, যাতে বিজ্ঞাপন প্রদর্শিত হওয়ার সময়েও লোডিং চলতে থাকে।
সর্বোত্তম অনুশীলন
অ্যাপ খোলার বিজ্ঞাপন (app open ads) পাওয়ার জন্য এই সেরা পদ্ধতিগুলো অনুসরণ করুন:
- কোনো ব্যবহারকারী আপনার অ্যাপটি বেশ কয়েকবার খোলার পরেই কেবল প্রথমবার খোলার বিজ্ঞাপনটি দেখান।
- বিজ্ঞাপন প্রদর্শিত হওয়ার সময় যদি আপনার লোডিং স্ক্রিন লোড হওয়া শেষ হয়ে যায়, তাহলে 'ad dismissed' কলব্যাক মেথডে লোডিং স্ক্রিনটি বাতিল করে দিন।