এই নির্দেশিকাটি Google Mobile Ads SDK (বিটা) ব্যবহার করে অ্যাপ খোলা বিজ্ঞাপনগুলিকে একীভূত করার জন্য প্রকাশকদের উদ্দেশ্যে।
অ্যাপ খোলা বিজ্ঞাপন হল একটি বিশেষ বিজ্ঞাপন বিন্যাস যা প্রকাশকদের জন্য তাদের অ্যাপ লোড স্ক্রীন নগদীকরণ করতে ইচ্ছুক। অ্যাপ খোলা বিজ্ঞাপনগুলি যে কোনও সময় বন্ধ করা যেতে পারে এবং আপনার ব্যবহারকারীরা যখন আপনার অ্যাপটিকে অগ্রভাগে নিয়ে আসে তখন দেখানোর জন্য ডিজাইন করা হয়েছে৷
অ্যাপ খোলা বিজ্ঞাপনগুলি স্বয়ংক্রিয়ভাবে একটি ছোট ব্র্যান্ডিং এলাকা দেখায় যাতে ব্যবহারকারীরা জানতে পারে যে তারা আপনার অ্যাপে রয়েছে। একটি অ্যাপ খোলা বিজ্ঞাপন দেখতে কেমন তার একটি উদাহরণ এখানে দেওয়া হল:
পূর্বশর্ত
- শুরু করুন গাইডটি সম্পূর্ণ করুন।
সর্বদা পরীক্ষার বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, নিশ্চিত করুন যে আপনি লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন। এটি করতে ব্যর্থ হলে আপনার অ্যাকাউন্ট স্থগিত হতে পারে।
পরীক্ষার বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল অ্যাপ খোলা বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:
ca-app-pub-3940256099942544/9257395921
প্রতিটি অনুরোধের জন্য পরীক্ষার বিজ্ঞাপনগুলি ফেরত দেওয়ার জন্য এটি বিশেষভাবে কনফিগার করা হয়েছে এবং কোডিং, পরীক্ষা এবং ডিবাগ করার সময় আপনি এটিকে আপনার নিজস্ব অ্যাপে ব্যবহার করতে পারবেন৷ আপনার অ্যাপ প্রকাশ করার আগে শুধু নিশ্চিত করুন যে আপনি এটিকে আপনার নিজের বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন।
Google মোবাইল বিজ্ঞাপন SDK (বিটা) পরীক্ষার বিজ্ঞাপনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পরীক্ষা বিজ্ঞাপনগুলি সক্ষম করুন দেখুন৷
অ্যাপ্লিকেশন ক্লাস প্রসারিত করুন
একটি নতুন ক্লাস তৈরি করুন যা Application
ক্লাস প্রসারিত করে। এটি একটি একক Activity
পরিবর্তে অ্যাপ্লিকেশনের অবস্থার সাথে আবদ্ধ বিজ্ঞাপনগুলি পরিচালনা করার জন্য একটি জীবনচক্র-সচেতন উপায় প্রদান করে:
কোটলিন
/** Application class that initializes, loads and show ads when activities change states. */
class MyApplication : Application() {
override fun onCreate() {
super<Application>.onCreate()
CoroutineScope(Dispatchers.IO).launch {
// Initialize the Mobile Ads SDK synchronously on a background thread.
MobileAds.initialize(this@MyApplication, InitializationConfig.Builder(APP_ID).build()) {}
}
}
private companion object {
// Sample AdMob App ID.
const val APP_ID = "ca-app-pub-3940256099942544~3347511713"
}
}
জাভা
/** Application class that initializes, loads and show ads when activities change states. */
public class MyApplication extends Application {
// Sample AdMob App ID.
private static final String APP_ID = "ca-app-pub-3940256099942544~3347511713";
@Override
public void onCreate() {
super.onCreate();
new Thread(
() -> {
// Initialize the SDK on a background thread.
MobileAds.initialize(
MyApplication.this,
new InitializationConfig.Builder(APP_ID).build(),
initializationStatus -> {});
})
.start();
}
}
এটি সেই কঙ্কাল প্রদান করে যেখানে আপনি পরে অ্যাপ ফোরগ্রাউন্ডিং ইভেন্টগুলির জন্য নিবন্ধন করবেন৷
এরপর, আপনার AndroidManifest.xml
এ নিম্নলিখিত কোড যোগ করুন:
<!-- TODO: Update to reference your actual package name. -->
<application
android:name="com.google.android.gms.example.appopendemo.MyApplication" ...>
...
</application>
আপনার ইউটিলিটি উপাদান বাস্তবায়ন
আপনার বিজ্ঞাপনটি দ্রুত দেখানো উচিত, তাই আপনার বিজ্ঞাপনটি প্রদর্শন করার আগে লোড করা ভাল। এইভাবে, আপনার ব্যবহারকারী আপনার অ্যাপে প্রবেশ করার সাথে সাথে আপনার কাছে একটি বিজ্ঞাপন তৈরি হবে।
অ্যাপ ওপেন বিজ্ঞাপনগুলি লোড করা এবং দেখানোর সাথে সম্পর্কিত কাজগুলিকে এনক্যাপসুলেট করতে একটি ইউটিলিটি উপাদান AppOpenAdManager
প্রয়োগ করুন:
কোটলিন
/**
* Interface definition for a callback to be invoked when an app open ad is complete (i.e. dismissed
* or fails to show).
*/
fun interface OnShowAdCompleteListener {
fun onShowAdComplete()
}
/** Singleton object that loads and shows app open ads. */
object AppOpenAdManager {
private var appOpenAd: AppOpenAd? = null
private var isLoadingAd = false
var isShowingAd = false
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Showing the app open ad itself does not require a context.
*/
fun loadAd(context: Context) {
// We will implement this later.
}
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad.
* @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
*/
fun showAdIfAvailable(activity: Activity, onShowAdCompleteListener: OnShowAdCompleteListener?) {
// We will implement this later.
}
/** Check if ad exists and can be shown. */
private fun isAdAvailable(): Boolean {
return appOpenAd != null
}
}
জাভা
/** Singleton object that loads and shows app open ads. */
public class AppOpenAdManager {
/**
* Interface definition for a callback to be invoked when an app open ad is complete (i.e.
* dismissed or fails to show).
*/
public interface OnShowAdCompleteListener {
void onShowAdComplete();
}
private static AppOpenAdManager instance;
private AppOpenAd appOpenAd;
private boolean isLoadingAd = false;
private boolean isShowingAd = false;
/** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
private long loadTime = 0;
public static synchronized AppOpenAdManager getInstance() {
if (instance == null) {
instance = new AppOpenAdManager();
}
return instance;
}
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Loading the app open ad itself does not require a context.
*/
public void loadAd(@NonNull Context context) {
// We will implement this later.
}
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad.
* @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
*/
public void showAdIfAvailable(
@NonNull Activity activity, @Nullable OnShowAdCompleteListener onShowAdCompleteListener) {
// We will implement this later.
}
/** Check if ad exists and can be shown. */
private boolean isAdAvailable() {
return appOpenAd != null
}
}
এখন আপনার একটি ইউটিলিটি ক্লাস আছে, আপনি এটিকে আপনার MyApplication
ক্লাসে ইনস্ট্যান্টিয়েট করতে পারেন:
জাভা
public class MyApplication extends Application {
private AppOpenAdManager appOpenAdManager;
@Override
public void onCreate() {
super.onCreate();
new Thread(
() -> {
// Initialize Google Mobile Ads SDK (beta) on a background thread.
MobileAds.initialize(this, initializationStatus -> {});
})
.start();
appOpenAdManager = new AppOpenAdManager(this);
}
}
কোটলিন
class MyApplication : Application() {
private lateinit var appOpenAdManager: AppOpenAdManager
override fun onCreate() {
super.onCreate()
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize Google Mobile Ads SDK (beta) on a background thread.
MobileAds.initialize(this@MyApplication) {}
}
appOpenAdManager = AppOpenAdManager()
}
}
AppOpenAdManager
ব্যবহার করতে, Singleton MyApplication
দৃষ্টান্তে সর্বজনীন র্যাপার পদ্ধতিগুলিকে কল করুন। Application
ক্লাস বাকি কোডের সাথে ইন্টারফেস করে, লোড করার কাজ অর্পণ করে এবং বিজ্ঞাপনটি পরিচালককে দেখানো হয়।
একটি বিজ্ঞাপন লোড করুন
পরবর্তী ধাপ হল loadAd()
পদ্ধতিটি পূরণ করা এবং বিজ্ঞাপন লোড কলব্যাকগুলি পরিচালনা করা।
কোটলিন
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Loading the app open ad itself does not require a context.
*/
fun loadAd(context: Context) {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is either loading or has already loaded.")
return
}
isLoadingAd = true
AppOpenAd.load(
AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
object : AdLoadCallback<AppOpenAd> {
/**
* Called when an app open ad has loaded.
*
* @param ad the loaded app open ad.
*/
override fun onAdLoaded(ad: AppOpenAd) {
// Called when an ad has loaded.
appOpenAd = ad
isLoadingAd = false
Log.d(Constant.TAG, "App open ad loaded.")
}
/**
* Called when an app open ad has failed to load.
*
* @param loadAdError the error.
*/
override fun onAdFailedToLoad(loadAdError: LoadAdError) {
isLoadingAd = false
Log.w(Constant.TAG, "App open ad failed to load: $loadAdError")
}
},
)
}
জাভা
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Loading the app open ad itself does not require a context.
*/
public void loadAd(@NonNull Context context) {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is either loading or has already loaded.");
return;
}
isLoadingAd = true;
AppOpenAd.load(
new AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
new AdLoadCallback<AppOpenAd>() {
@Override
public void onAdLoaded(@NonNull AppOpenAd ad) {
appOpenAd = ad;
isLoadingAd = false;
Log.d(Constant.TAG, "App open ad loaded.");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
isLoadingAd = false;
Log.w(Constant.TAG, "App open ad failed to load: " + loadAdError);
}
});
}
আপনার নিজের বিজ্ঞাপন ইউনিট ID দিয়ে AD_UNIT_ID প্রতিস্থাপন করুন।
বিজ্ঞাপন দেখান
সবচেয়ে সাধারণ অ্যাপ ওপেন ইমপ্লিমেন্টেশন হল অ্যাপ লঞ্চের কাছাকাছি একটি অ্যাপ খোলা বিজ্ঞাপন দেখানোর চেষ্টা করা, বিজ্ঞাপনটি প্রস্তুত না হলে অ্যাপ কন্টেন্ট শুরু করা এবং পরবর্তী অ্যাপ খোলার সুযোগের জন্য অন্য একটি বিজ্ঞাপন প্রিলোড করা। প্রয়োগের উদাহরণের জন্য অ্যাপ খোলা বিজ্ঞাপন নির্দেশিকা দেখুন।
নিম্নলিখিত কোডটি দেখায় এবং পরবর্তীতে একটি বিজ্ঞাপন পুনরায় লোড করে:
কোটলিন
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad.
* @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
*/
fun showAdIfAvailable(activity: Activity, onShowAdCompleteListener: OnShowAdCompleteListener?) {
// If the app open ad is already showing, do not show the ad again.
if (isShowingAd) {
Log.d(Constant.TAG, "App open ad is already showing.")
onShowAdCompleteListener?.onShowAdComplete()
return
}
// If the app open ad is not available yet, invoke the callback.
if (!isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is not ready yet.")
onShowAdCompleteListener?.onShowAdComplete()
return
}
appOpenAd?.adEventCallback =
object : AppOpenAdEventCallback {
override fun onAdShowedFullScreenContent() {
Log.d(Constant.TAG, "App open ad showed.")
}
override fun onAdDismissedFullScreenContent() {
Log.d(Constant.TAG, "App open ad dismissed.")
appOpenAd = null
isShowingAd = false
onShowAdCompleteListener?.onShowAdComplete()
loadAd(activity)
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
appOpenAd = null
isShowingAd = false
Log.w(Constant.TAG, "App open ad failed to show: $fullScreenContentError")
onShowAdCompleteListener?.onShowAdComplete()
loadAd(activity)
}
override fun onAdImpression() {
Log.d(Constant.TAG, "App open ad recorded an impression.")
}
override fun onAdClicked() {
Log.d(Constant.TAG, "App open ad recorded a click.")
}
}
isShowingAd = true
appOpenAd?.show(activity)
}
জাভা
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad.
* @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
*/
public void showAdIfAvailable(
@NonNull Activity activity, @Nullable OnShowAdCompleteListener onShowAdCompleteListener) {
// If the app open ad is already showing, do not show the ad again.
if (isShowingAd) {
Log.d(Constant.TAG, "App open ad is already showing.");
if (onShowAdCompleteListener != null) {
onShowAdCompleteListener.onShowAdComplete();
}
return;
}
// If the app open ad is not available yet, invoke the callback.
if (!isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is not ready yet.");
if (onShowAdCompleteListener != null) {
onShowAdCompleteListener.onShowAdComplete();
}
return;
}
appOpenAd.setAdEventCallback(
new AppOpenAdEventCallback() {
@Override
public void onAdShowedFullScreenContent() {
Log.d(Constant.TAG, "App open ad shown.");
}
@Override
public void onAdDismissedFullScreenContent() {
Log.d(Constant.TAG, "App open ad dismissed.");
appOpenAd = null;
isShowingAd = false;
if (onShowAdCompleteListener != null) {
onShowAdCompleteListener.onShowAdComplete();
}
loadAd(activity);
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
appOpenAd = null;
isShowingAd = false;
Log.w(Constant.TAG, "App open ad failed to show: " + fullScreenContentError);
if (onShowAdCompleteListener != null) {
onShowAdCompleteListener.onShowAdComplete();
}
loadAd(activity);
}
@Override
public void onAdImpression() {
Log.d(Constant.TAG, "App open ad recorded an impression.");
}
@Override
public void onAdClicked() {
Log.d(Constant.TAG, "App open ad recorded a click.");
}
});
isShowingAd = true;
appOpenAd.show(activity);
}
AppOpenAdEventCallback
ইভেন্টগুলি পরিচালনা করে যেমন বিজ্ঞাপনটি কখন উপস্থাপন করা হয়, উপস্থাপন করতে ব্যর্থ হয় বা কখন এটি খারিজ হয়।
বিজ্ঞাপনের মেয়াদ শেষ হওয়ার কথা বিবেচনা করুন
আপনি মেয়াদ শেষ হয়ে যাওয়া বিজ্ঞাপন দেখাবেন না তা নিশ্চিত করতে, AppOpenAdManager
এ একটি পদ্ধতি যোগ করুন যা আপনার বিজ্ঞাপনের রেফারেন্স লোড হওয়ার পর কতক্ষণ হয়েছে তা পরীক্ষা করে। তারপর, বিজ্ঞাপনটি এখনও বৈধ কিনা তা পরীক্ষা করতে সেই পদ্ধতিটি ব্যবহার করুন৷
কোটলিন
object AppOpenAdManager {
// ...
/** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
private var loadTime: Long = 0;
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Loading the app open ad itself does not require a context.
*/
fun loadAd(context: Context) {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is either loading or has already loaded.")
return
}
isLoadingAd = true
AppOpenAd.load(
AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
object : AdLoadCallback<AppOpenAd> {
/**
* Called when an app open ad has loaded.
*
* @param ad the loaded app open ad.
*/
override fun onAdLoaded(ad: AppOpenAd) {
// Called when an ad has loaded.
appOpenAd = ad
isLoadingAd = false
loadTime = Date().time
Log.d(Constant.TAG, "App open ad loaded.")
}
/**
* Called when an app open ad has failed to load.
*
* @param loadAdError the error.
*/
override fun onAdFailedToLoad(loadAdError: LoadAdError) {
isLoadingAd = false
Log.w(Constant.TAG, "App open ad failed to load: $loadAdError")
}
},
)
}
// ...
/** Check if ad was loaded more than n hours ago. */
private fun wasLoadTimeLessThanNHoursAgo(numHours: Long): Boolean {
val dateDifference: Long = Date().time - loadTime
val numMilliSecondsPerHour: Long = 3600000
return dateDifference < numMilliSecondsPerHour * numHours
}
/** Check if ad exists and can be shown. */
private fun isAdAvailable(): Boolean {
// App open ads expire after four hours. Ads rendered more than four hours after request time
// are no longer valid and may not earn revenue.
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4)
}
}
জাভা
public class AppOpenAdManager {
// ...
/** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
private long loadTime = 0;
/**
* Load an ad.
*
* @param context a context used to perform UI-related operations (e.g. display Toast messages).
* Loading the app open ad itself does not require a context.
*/
public void loadAd(@NonNull Context context) {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
Log.d(Constant.TAG, "App open ad is either loading or has already loaded.");
return;
}
isLoadingAd = true;
AppOpenAd.load(
new AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
new AdLoadCallback<AppOpenAd>() {
@Override
public void onAdLoaded(@NonNull AppOpenAd ad) {
appOpenAd = ad;
isLoadingAd = false;
loadTime = new Date().getTime();
Log.d(Constant.TAG, "App open ad loaded.");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
isLoadingAd = false;
Log.w(Constant.TAG, "App open ad failed to load: " + loadAdError);
}
});
}
// ...
/** Check if ad was loaded more than n hours ago. */
private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
long dateDifference = new Date().getTime() - loadTime;
long numMilliSecondsPerHour = 3600000L;
return dateDifference < numMilliSecondsPerHour * numHours;
}
/** Check if ad exists and can be shown. */
private boolean isAdAvailable() {
// App open ads expire after four hours. Ads rendered more than four hours after request time
// are no longer valid and may not earn revenue.
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
}
}
বর্তমান কার্যকলাপ ট্র্যাক রাখুন
বিজ্ঞাপনটি দেখানোর জন্য, আপনার একটি Activity
প্রসঙ্গ প্রয়োজন হবে। ব্যবহার করা হচ্ছে সবচেয়ে বর্তমান কার্যকলাপের ট্র্যাক রাখতে, Application.ActivityLifecycleCallbacks
এর জন্য নিবন্ধন করুন এবং বাস্তবায়ন করুন।
কোটলিন
class MyApplication : Application(), Application.ActivityLifecycleCallbacks {
private var currentActivity: Activity? = null
override fun onCreate() {
super<Application>.onCreate()
registerActivityLifecycleCallbacks(this)
}
/** ActivityLifecycleCallback methods. */
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
override fun onActivityStarted(activity: Activity) {
currentActivity = activity
}
override fun onActivityResumed(activity: Activity) {}
override fun onActivityPaused(activity: Activity) {}
override fun onActivityStopped(activity: Activity) {}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {}
// ...
}
জাভা
public class MyApplication extends Application
implements Application.ActivityLifecycleCallbacks {
private Activity currentActivity;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
/** ActivityLifecycleCallback methods. */
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {}
@Override
public void onActivityStarted(@NonNull Activity activity) {
currentActivity = activity;
}
@Override
public void onActivityResumed(@NonNull Activity activity) {}
@Override
public void onActivityPaused(@NonNull Activity activity) {}
@Override
public void onActivityStopped(@NonNull Activity activity) {}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {}
// ...
}
registerActivityLifecycleCallbacks
আপনাকে সমস্ত Activity
ইভেন্ট শুনতে দেয়। কখন ক্রিয়াকলাপগুলি শুরু এবং ধ্বংস করা হয় তা শুনে, আপনি বর্তমান Activity
একটি রেফারেন্স ট্র্যাক রাখতে পারেন, যা আপনি আপনার অ্যাপ খোলা বিজ্ঞাপন উপস্থাপনে ব্যবহার করবেন৷
অ্যাপ ফোরগ্রাউন্ডিং ইভেন্টের জন্য শুনুন
অ্যাপ ফোরগ্রাউন্ড ইভেন্টগুলি শুনতে, নিম্নলিখিত পদক্ষেপগুলি করুন:
আপনার গ্রেডল ফাইলে লাইব্রেরি যোগ করুন
অ্যাপের ফোরগ্রাউন্ডিং ইভেন্ট সম্পর্কে অবহিত হতে, আপনাকে একটি DefaultLifecycleObserver
নিবন্ধন করতে হবে। আপনার অ্যাপ-স্তরের বিল্ড ফাইলে এর নির্ভরতা যোগ করুন:
কোটলিন
dependencies { implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.21.0-beta01") implementation("androidx.lifecycle:lifecycle-process:2.8.3") }
গ্রোভি
dependencies { implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.21.0-beta01' implementation 'androidx.lifecycle:lifecycle-process:2.8.3' }
জীবনচক্র পর্যবেক্ষক ইন্টারফেস বাস্তবায়ন
আপনি DefaultLifecycleObserver
ইন্টারফেস প্রয়োগ করে ফোরগ্রাউন্ডিং ইভেন্ট শুনতে পারেন।
অ্যাপ খোলা বিজ্ঞাপন দেখানোর জন্য onStart()
প্রয়োগ করুন।
কোটলিন
class MyApplication :
Application(), Application.ActivityLifecycleCallbacks, DefaultLifecycleObserver {
private var currentActivity: Activity? = null
override fun onCreate() {
super<Application>.onCreate()
registerActivityLifecycleCallbacks(this)
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
/**
* DefaultLifecycleObserver method that shows the app open ad when the app moves to foreground.
*/
override fun onStart(owner: LifecycleOwner) {
currentActivity?.let { activity ->
AppOpenAdManager.showAdIfAvailable(activity, null)
}
}
// ...
}
জাভা
public class MyApplication extends Application
implements Application.ActivityLifecycleCallbacks, DefaultLifecycleObserver {
private Activity currentActivity;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
/**
* DefaultLifecycleObserver method that shows the app open ad when the app moves to foreground.
*/
@Override
public void onStart(@NonNull LifecycleOwner owner) {
if (currentActivity == null) {
return;
}
AppOpenAdManager.getInstance().showAdIfAvailable(currentActivity, null);
}
// ...
}
ঠান্ডা শুরু এবং পর্দা লোড হচ্ছে
ডকুমেন্টেশনটি এখন পর্যন্ত অনুমান করে যে আপনি শুধুমাত্র অ্যাপ খোলার বিজ্ঞাপনগুলি দেখান যখন ব্যবহারকারীরা আপনার অ্যাপটি মেমরিতে সাসপেন্ড করা থাকে "কোল্ড স্টার্ট" ঘটে যখন আপনার অ্যাপ চালু হয় কিন্তু আগে মেমরিতে সাসপেন্ড করা হয়নি।
একটি কোল্ড স্টার্টের উদাহরণ হল যখন একজন ব্যবহারকারী প্রথমবার আপনার অ্যাপ খোলেন। ঠান্ডা শুরু হলে, আপনার কাছে আগে লোড করা কোনো অ্যাপ খোলা বিজ্ঞাপন থাকবে না যা এখনই দেখানোর জন্য প্রস্তুত। আপনি যখন একটি বিজ্ঞাপনের অনুরোধ করেন এবং একটি বিজ্ঞাপন ফেরত পান তখন এর মধ্যে দেরি এমন একটি পরিস্থিতি তৈরি করতে পারে যেখানে ব্যবহারকারীরা একটি প্রেক্ষাপটের বাইরের বিজ্ঞাপনে অবাক হওয়ার আগে আপনার অ্যাপটি সংক্ষিপ্তভাবে ব্যবহার করতে সক্ষম হয়। এটি এড়ানো উচিত কারণ এটি একটি খারাপ ব্যবহারকারীর অভিজ্ঞতা।
কোল্ড স্টার্টে অ্যাপ খোলা বিজ্ঞাপনগুলি ব্যবহার করার পছন্দের উপায় হল আপনার গেম বা অ্যাপ সম্পদগুলি লোড করার জন্য একটি লোডিং স্ক্রীন ব্যবহার করা এবং শুধুমাত্র লোডিং স্ক্রীন থেকে বিজ্ঞাপন দেখানো। যদি আপনার অ্যাপটি লোডিং সম্পন্ন করে থাকে এবং ব্যবহারকারীকে আপনার অ্যাপের মূল বিষয়বস্তুতে পাঠিয়ে থাকে, তাহলে বিজ্ঞাপনটি দেখাবেন না।
সর্বোত্তম অনুশীলন
অ্যাপ খোলার বিজ্ঞাপনগুলি আপনাকে আপনার অ্যাপের লোডিং স্ক্রীন নগদীকরণ করতে সাহায্য করে, যখন অ্যাপটি প্রথম চালু হয় এবং অ্যাপ স্যুইচ করার সময়, তবে আপনার ব্যবহারকারীরা যাতে আপনার অ্যাপ ব্যবহার করে উপভোগ করতে পারে সেজন্য সর্বোত্তম অনুশীলনগুলি মাথায় রাখা গুরুত্বপূর্ণ। এটি করা সর্বোত্তম:
- আপনার ব্যবহারকারীরা আপনার অ্যাপটি কয়েকবার ব্যবহার করার পরে আপনার প্রথম অ্যাপ খোলার বিজ্ঞাপন দেখান।
- যখন আপনার ব্যবহারকারীরা অন্যথায় আপনার অ্যাপ লোড হওয়ার জন্য অপেক্ষা করবে তখন অ্যাপ খোলার বিজ্ঞাপনগুলি দেখান।
- আপনার যদি অ্যাপ ওপেন অ্যাডের অধীনে একটি লোডিং স্ক্রিন থাকে এবং বিজ্ঞাপনটি খারিজ হওয়ার আগে আপনার লোডিং স্ক্রিন লোডিং সম্পূর্ণ করে, তাহলে আপনি
onAdDismissedFullScreenContent()
পদ্ধতিতে আপনার লোডিং স্ক্রীনটি খারিজ করতে চাইতে পারেন।
উদাহরণ
Google মোবাইল বিজ্ঞাপন SDK (বিটা) ব্যবহার প্রদর্শন করে এমন উদাহরণ অ্যাপ ডাউনলোড করুন এবং চালান।