এই নির্দেশিকাটি সেইসব প্রকাশকদের জন্য, যারা Firebase ব্যবহার না করে AdMob-এর মাধ্যমে একটি C++ অ্যাপ থেকে অর্থ উপার্জন করতে চান। যদি আপনি আপনার অ্যাপে Firebase অন্তর্ভুক্ত করার পরিকল্পনা করেন—অথবা এটি করার কথা ভেবে থাকেন—তবে এর পরিবর্তে এই নির্দেশিকার ‘AdMob with Firebase’ সংস্করণটি দেখুন।
একটি অ্যাপে গুগল মোবাইল অ্যাডস সি++ এসডিকে (Google Mobile Ads C++ SDK) যুক্ত করাই হলো বিজ্ঞাপন দেখানো এবং আয় করার প্রথম ধাপ। এসডিকে যুক্ত করার পর, আপনি ইন্টারস্টিশিয়াল বা রিওয়ার্ডেড-এর মতো একটি বিজ্ঞাপন ফরম্যাট বেছে নিতে পারেন এবং এটি বাস্তবায়নের জন্য ধাপগুলো অনুসরণ করতে পারেন।
গুগল মোবাইল অ্যাডস সি++ এসডিকে-টি গুগল মোবাইল অ্যাডস আইওএস এবং অ্যান্ড্রয়েড এসডিকে-গুলোকে আবৃত করে রাখে এবং এটি শুধুমাত্র সেই প্ল্যাটফর্মগুলোতেই উপলব্ধ। গুগল মোবাইল অ্যাডস সি++ এসডিকে-টি অ্যাসিঙ্ক্রোনাস অপারেশন সমর্থন করার জন্য ফায়ারবেস সি++ কনস্ট্রাক্ট ব্যবহার করে, তাই এটি firebase::gma নেমস্পেসে অবস্থান করে।
আপনি যদি প্রথমবারের মতো এই নির্দেশিকাটি পড়ে থাকেন, তাহলে আমরা আপনাকে Google Mobile Ads C++ টেস্ট অ্যাপটি ডাউনলোড করে অনুসরণ করার পরামর্শ দিচ্ছি।
পূর্বশর্ত
অ্যান্ড্রয়েড
- অ্যান্ড্রয়েড স্টুডিও ৩.২ বা উচ্চতর সংস্করণ ব্যবহার করুন
- নিশ্চিত করুন যে আপনার অ্যাপের বিল্ড ফাইলে নিম্নলিখিত মানগুলি ব্যবহৃত হয়েছে:
-
minSdkVersion১৬ বা তার বেশি -
compileSdkVersion২৮ বা তার বেশি
-
আইওএস
- Xcode 13 বা উচ্চতর সংস্করণ ব্যবহার করুন
- iOS 10.0 বা তার উচ্চতর সংস্করণকে লক্ষ্য করুন
আপনার AdMob অ্যাকাউন্টে আপনার অ্যাপটি সেট আপ করুন।
নিম্নলিখিত ধাপগুলি সম্পন্ন করে আপনার অ্যাপটিকে একটি AdMob অ্যাপ হিসেবে নিবন্ধন করুন:
একটি AdMob অ্যাকাউন্টে সাইন ইন করুন বা সাইন আপ করুন ।
AdMob-এ আপনার অ্যাপটি নিবন্ধন করুন । এই ধাপে একটি অনন্য AdMob অ্যাপ আইডি সহ একটি AdMob অ্যাপ তৈরি হয়, যা এই নির্দেশিকার পরবর্তী অংশে প্রয়োজন হবে।
Google Mobile Ads C++ SDK ইনস্টল করুন
যেহেতু গুগল মোবাইল অ্যাডস সি++ এসডিকে ` firebase::gma নেমস্পেসে থাকে, তাই ফায়ারবেস সি++ এসডিকে ডাউনলোড করুন এবং তারপর আপনার পছন্দের একটি ডিরেক্টরিতে এটি আনজিপ করুন।
Firebase C++ SDK কোনো নির্দিষ্ট প্ল্যাটফর্মের জন্য নয়, তবে এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট লাইব্রেরি কনফিগারেশন প্রয়োজন হয়।
অ্যান্ড্রয়েড
আমরা CMake ব্যবহারের পরামর্শ দিই, কিন্তু আপনার অ্যাপের সাথে libfirebase_app.a এবং libfirebase_gma.a লিঙ্ক করার জন্য আপনি আমাদের সাধারণ Firebase C++ SDK Get Started Guide- এ ndk-build-এর নির্দেশাবলী খুঁজে নিতে পারেন।
আপনার প্রোজেক্টের
gradle.propertiesফাইলে আনজিপ করা SDK-এর অবস্থান উল্লেখ করুন:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKআপনার প্রোজেক্টের
settings.gradleফাইলে নিম্নলিখিত বিষয়বস্তু যোগ করুন:def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে—যা সাধারণত
app/build.gradle—নিম্নলিখিত বিষয়বস্তু যোগ করুন, যার মধ্যে গুগল মোবাইল অ্যাডস সি++ এসডিকে-এর লাইব্রেরি নির্ভরতা অন্তর্ভুক্ত রয়েছে।android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma }আপনার প্রোজেক্টের
CMakeLists.txtফাইলে নিম্নলিখিত বিষয়বস্তু যোগ করুন।# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")আপনার অ্যাপটি সিঙ্ক করুন যাতে সমস্ত ডিপেন্ডেন্সিগুলোর প্রয়োজনীয় ভার্সন থাকে।
আইওএস
এই বিভাগে বর্ণিত ধাপগুলো আপনার iOS প্রজেক্টে Google Mobile Ads C++ SDK যুক্ত করার একটি উদাহরণ।
CocoaPods সংস্করণ ১ বা তার পরবর্তী সংস্করণ পেতে নিম্নলিখিত কমান্ডটি চালান:
sudo gem install cocoapods --preআনজিপ করা SDK থেকে Google Mobile Ads পডটি যোগ করুন।
আপনার যদি আগে থেকে Podfile না থাকে, তাহলে একটি তৈরি করুন:
cd APP_DIRECTORYpod initআপনার Podfile-এ Google Mobile Ads C++ SDK, Google User Messaging Platform SDK, এবং ন্যূনতম Firebase কোর SDK (যা GMA C++ SDK-এর জন্য আবশ্যক)-এর পডগুলো যোগ করুন:
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'পডগুলো ইনস্টল করুন, তারপর এক্সকোডে
.xcworkspaceফাইলটি খুলুন।pod installopen APP.xcworkspaceপ্রজেক্টটিতে Firebase C++ SDK থেকে নিম্নলিখিত ফ্রেমওয়ার্কগুলো যোগ করুন:
-
xcframeworks/firebase.xcframework -
xcframeworks/firebase_gma.xcframework
-
সবকিছু প্রস্তুত! আপনার C++ অ্যাপটি অন্য কোনো Firebase পরিষেবা ছাড়াই Google Mobile Ads C++ SDK ব্যবহার করার জন্য কনফিগার করা হয়েছে।
আপনার অ্যাপের AdMob অ্যাপ আইডি কনফিগার করুন
অ্যান্ড্রয়েড
মোবাইল অ্যাডস এসডিকে অ্যান্ড্রয়েড গাইডে বর্ণিত আপনার অ্যাপ কনফিগার করার ধাপ ৩ অনুসরণ করুন এবং তারপর এই পৃষ্ঠায় ফিরে আসুন।
আইওএস
মোবাইল অ্যাডস এসডিকে আইওএস গাইডে বর্ণিত ‘আপনার Info.plist আপডেট করুন ’ ধাপটি অনুসরণ করুন এবং তারপর এই পৃষ্ঠায় ফিরে আসুন।
গুগল মোবাইল বিজ্ঞাপন এসডিকে শুরু করুন
বিজ্ঞাপন লোড করার আগে, আপনার অ্যাপকে firebase::gma::Initialize() কল করে Google Mobile Ads C++ SDK ইনিশিয়ালাইজ করতে হবে। এটি SDK-কে ইনিশিয়ালাইজ করে এবং ইনিশিয়ালাইজেশন সম্পূর্ণ হলে (অথবা ৩০-সেকেন্ডের টাইমআউটের পরে) একটি firebase::Future সম্পন্ন করে। এটি শুধুমাত্র একবার করা প্রয়োজন, আদর্শগতভাবে অ্যাপ চালু করার সময়।
Initialize() কল করার পর Google Mobile Ads C++ SDK অথবা মিডিয়েশন পার্টনার SDK-এর মাধ্যমে বিজ্ঞাপনগুলো আগে থেকে লোড করা হতে পারে। যদি আপনার European Economic Area (EEA)-র ব্যবহারকারীদের কাছ থেকে সম্মতি নেওয়ার প্রয়োজন হয়, কোনো অনুরোধ-নির্দিষ্ট ফ্ল্যাগ (যেমন tag_for_child_directed_treatment বা tag_for_under_age_of_consent ) সেট করতে হয়, অথবা বিজ্ঞাপন লোড করার আগে অন্য কোনো পদক্ষেপ নিতে হয়, তাহলে Google Mobile Ads C++ SDK ইনিশিয়ালাইজ করার আগে firebase::gma::SetRequestConfiguration() কল করে তা নিশ্চিত করুন। আরও তথ্যের জন্য আমাদের টার্গেটিং গাইড দেখুন।
Initialize() কল করার একটি উদাহরণ নিচে দেওয়া হলো:
অ্যান্ড্রয়েড
// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(jni_env, j_activity, &result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
আইওএস
// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(&result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
একটি মেথড কলের সমাপ্তির অবস্থা নিরীক্ষণ করতে Future ব্যবহার করুন।
Future আপনাকে আপনার অ্যাসিঙ্ক্রোনাস মেথড কলগুলোর সমাপ্তির অবস্থা নির্ধারণ করার একটি উপায় প্রদান করে।
উদাহরণস্বরূপ, যখন আপনার অ্যাপ firebase::gma::Initialize() কল করে, তখন একটি নতুন firebase::Future তৈরি হয়ে রিটার্ন হয়। এরপর আপনার অ্যাপ ইনিশিয়ালাইজেশন কখন সম্পন্ন হয়েছে তা জানার জন্য Future টির status() পোল করতে পারে। একবার সম্পন্ন হলে, আপনার অ্যাপ প্রাপ্ত AdapterInitializationStatus পাওয়ার জন্য result() কল করতে পারে।
যেসব মেথড একটি Future রিটার্ন করে, সেগুলোর একটি সংশ্লিষ্ট "last result" মেথড থাকে, যা অ্যাপগুলো কোনো নির্দিষ্ট অ্যাকশনের জন্য সবচেয়ে সাম্প্রতিক Future খুঁজে বের করতে ব্যবহার করতে পারে। উদাহরণস্বরূপ, firebase::gma::Initialize() একটি সংশ্লিষ্ট মেথড আছে যার নাম firebase::gma::InitializeLastResult() , যা এমন একটি Future রিটার্ন করে যা আপনার অ্যাপ firebase::gma::Initialize() এর শেষ কলের স্ট্যাটাস চেক করতে ব্যবহার করতে পারে।
যদি Future এর স্ট্যাটাস complete হয় এবং এর এরর কোড firebase::gma::kAdErrorCodeNone হয়, তাহলে অপারেশনটি সফলভাবে সম্পন্ন হয়েছে।
একটি Future সম্পূর্ণ হলে চালু হওয়ার জন্য আপনি কলব্যাকও রেজিস্টার করতে পারেন। কিছু ক্ষেত্রে, কলব্যাকটি একটি ভিন্ন থ্রেডে চলবে, তাই নিশ্চিত করুন যে আপনার কোডটি থ্রেড-সেফ। এই কোড স্নিপেটটি কলব্যাকের জন্য একটি ফাংশন পয়েন্টার ব্যবহার করে:
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
/*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
// Called when the Future is completed for the last call to firebase::gma::Initialize().
// If the error code is firebase::gma::kAdErrorCodeNone,
// then the SDK has been successfully initialized.
if (future.error() == firebase::gma::kAdErrorCodeNone) {
// success!
} else {
// failure.
}
}
একটি বিজ্ঞাপনের ফরম্যাট নির্বাচন করুন
Google Mobile Ads C++ SDK এখন ইম্পোর্ট করা হয়েছে এবং আপনি একটি বিজ্ঞাপন প্রয়োগ করার জন্য প্রস্তুত। AdMob বিভিন্ন ধরনের বিজ্ঞাপন ফরম্যাট অফার করে, তাই আপনি আপনার অ্যাপের ব্যবহারকারীর অভিজ্ঞতার জন্য সবচেয়ে উপযুক্ত ফরম্যাটটি বেছে নিতে পারেন।
ব্যানার
আয়তাকার বিজ্ঞাপন যা ডিভাইসের স্ক্রিনের উপরে বা নীচে প্রদর্শিত হয়। ব্যবহারকারীরা যতক্ষণ অ্যাপটি ব্যবহার করেন, ততক্ষণ ব্যানার বিজ্ঞাপন স্ক্রিনে থাকে এবং একটি নির্দিষ্ট সময় পরে স্বয়ংক্রিয়ভাবে রিফ্রেশ হতে পারে। আপনি যদি মোবাইল বিজ্ঞাপনে নতুন হন, তবে এগুলো শুরু করার জন্য একটি চমৎকার উপায়।
ইন্টারস্টিশিয়াল
পূর্ণ-পর্দার বিজ্ঞাপন যা ব্যবহারকারী বন্ধ না করা পর্যন্ত অ্যাপের ইন্টারফেস জুড়ে থাকে। অ্যাপ চলার স্বাভাবিক বিরতির সময়, যেমন কোনো গেমের বিভিন্ন লেভেলের মাঝে বা কোনো কাজ শেষ হওয়ার ঠিক পরে, এগুলো ব্যবহার করা সবচেয়ে ভালো।
ইন্টারস্টিশিয়াল বিজ্ঞাপন বাস্তবায়ন করুন
পুরস্কৃত
যেসব বিজ্ঞাপন সংক্ষিপ্ত ভিডিও দেখার জন্য এবং খেলার যোগ্য বিজ্ঞাপন ও সমীক্ষায় অংশগ্রহণের জন্য ব্যবহারকারীদের পুরস্কৃত করে। এগুলো ফ্রি-টু-প্লে অ্যাপ থেকে অর্থ উপার্জনের জন্য ব্যবহৃত হয়।