অ্যাপ খোলা বিজ্ঞাপন

This guide is intended for publishers integrating app open ads using GMA Next-Gen SDK .

অ্যাপ ওপেন অ্যাড হলো একটি বিশেষ বিজ্ঞাপন ফরম্যাট, যা অ্যাপ পাবলিশারদের তাদের অ্যাপ লোড স্ক্রিন থেকে অর্থ উপার্জনের উদ্দেশ্যে তৈরি করা হয়েছে। অ্যাপ ওপেন অ্যাড যেকোনো সময় বন্ধ করা যায় এবং এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ব্যবহারকারীরা যখন আপনার অ্যাপটিকে ফোরগ্রাউন্ডে নিয়ে আসে, তখন এটি দেখানো হয়।

App open ads automatically show a small branding area so users know they're in your app. Here is an example of what an app open ad looks like:

পূর্বশর্ত

চালিয়ে যাওয়ার আগে, GMA Next-Gen SDK সেট আপ করুন

সর্বদা টেস্ট অ্যাড দিয়ে পরীক্ষা করুন

When building and testing your apps, make sure you use test ads rather than live, production ads. Failure to do so can lead to suspension of your account.

The easiest way to load test ads is to use our dedicated test ad unit ID for app open ads:

/21775744923/example/app-open

প্রতিটি অনুরোধের জন্য পরীক্ষামূলক বিজ্ঞাপন দেখানোর জন্য এটি বিশেষভাবে কনফিগার করা হয়েছে, এবং কোডিং, টেস্টিং ও ডিবাগিং করার সময় আপনি আপনার নিজের অ্যাপে এটি নির্দ্বিধায় ব্যবহার করতে পারেন। শুধু আপনার অ্যাপটি প্রকাশ করার আগে নিশ্চিত হয়ে নেবেন যে আপনি এটিকে আপনার নিজের অ্যাড ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন।

For more information about how GMA Next-Gen SDK test ads work, see Enable test ads .

অ্যাপ্লিকেশন ক্লাসটি প্রসারিত করুন

Create a new class that extends the Application class. This provides a lifecycle-aware way to manage ads that are tied to the application's state rather than a single 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();
  }
}

This provides the skeleton where you'll later register for app foregrounding events.

Next, add the following code to your AndroidManifest.xml :

<!-- TODO: Update to reference your actual package name. -->
<application
    android:name="com.google.android.gms.example.appopendemo.MyApplication" ...>
...
</application>

আপনার ইউটিলিটি কম্পোনেন্ট বাস্তবায়ন করুন

Your ad should show quickly, so it's best to load your ad before you need to display it. That way, you'll have an ad ready to go as soon as your user enters into your app.

Implement a utility component AppOpenAdManager to encapsulate the work related to loading and showing App Open ads:

কোটলিন

/**
* 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
  }
}

Now that you have a utility class, you can instantiate it in your MyApplication class:

জাভা

public class MyApplication extends Application {

  private AppOpenAdManager appOpenAdManager;

  @Override
  public void onCreate() {
    super.onCreate();
    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK 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 GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(this@MyApplication) {}
    }
    appOpenAdManager = AppOpenAdManager()
  }
}

AppOpenAdManager ব্যবহার করতে, সিঙ্গেলটন MyApplication ইনস্ট্যান্সের পাবলিক র‍্যাপার মেথডগুলো কল করুন। Application ক্লাসটি কোডের বাকি অংশের সাথে ইন্টারফেস হিসেবে কাজ করে এবং বিজ্ঞাপন লোড ও দেখানোর কাজটি ম্যানেজারের ওপর অর্পণ করে।

একটি বিজ্ঞাপন লোড করুন

The next step is to fill out the loadAd() method and handle the ad load callbacks.

কোটলিন


/**
 * 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);
        }
      });
}

AD_UNIT_ID জায়গায় আপনার নিজের অ্যাড ইউনিট আইডি বসান।

বিজ্ঞাপনটি দেখান

অ্যাপ খোলার সবচেয়ে প্রচলিত বাস্তবায়ন হলো, অ্যাপ চালু হওয়ার ঠিক আগে একটি বিজ্ঞাপন দেখানোর চেষ্টা করা, বিজ্ঞাপনটি প্রস্তুত না থাকলে অ্যাপের মূল বিষয়বস্তু দেখানো শুরু করা এবং পরবর্তীবার অ্যাপ খোলার সুযোগের জন্য আরেকটি বিজ্ঞাপন আগে থেকে লোড করে রাখা। বাস্তবায়নের উদাহরণের জন্য ‘অ্যাপ ওপেন অ্যাড গাইডেন্স’ দেখুন।

The following code shows and subsequently reloads an ad:

কোটলিন

/**
 * 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);
}

The AppOpenAdEventCallback handles events such as when the ad is presented, fails to present, or when it is dismissed.

বিজ্ঞাপনের মেয়াদ শেষ হওয়ার বিষয়টি বিবেচনা করুন

মেয়াদোত্তীর্ণ বিজ্ঞাপন যাতে দেখানো না হয়, তা নিশ্চিত করতে 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);
  }
}

বর্তমান কার্যকলাপের উপর নজর রাখুন

To show the ad, you'll need an Activity context. To keep track of the most current activity being used, register for and implement the 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 একটি রেফারেন্সের হিসাব রাখতে পারেন, যা আপনি পরবর্তীতে আপনার অ্যাপ খোলার বিজ্ঞাপন দেখানোর জন্য ব্যবহার করবেন।

অ্যাপ ফোরগ্রাউন্ডিং ইভেন্টগুলির জন্য শুনুন

To listen for app foreground events, do the following steps:

আপনার গ্রেডল ফাইলে লাইব্রেরিগুলো যোগ করুন।

To be notified of app foregrounding events, you need to register a DefaultLifecycleObserver . Add its dependency to your app-level build file:

কোটলিন

  dependencies {
    implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.0.1")
    implementation("androidx.lifecycle:lifecycle-process:2.8.3")
  }

গ্রুভি

  dependencies {
    implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.0.1'
    implementation 'androidx.lifecycle:lifecycle-process:2.8.3'
  }

লাইফসাইকেল অবজারভার ইন্টারফেস বাস্তবায়ন করুন

You can listen for foregrounding events by implementing the DefaultLifecycleObserver interface.

অ্যাপ খোলার বিজ্ঞাপন দেখানোর জন্য 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);
  }

  // ...
}

কোল্ড স্টার্ট এবং লোডিং স্ক্রিন

এখন পর্যন্ত ডকুমেন্টেশনে ধরে নেওয়া হয়েছে যে, আপনার অ্যাপটি মেমরিতে সাসপেন্ড থাকা অবস্থায় ব্যবহারকারীরা যখন সেটিকে ফোরগ্রাউন্ডে নিয়ে আসে, কেবল তখনই আপনি অ্যাপ খোলার বিজ্ঞাপন দেখান। "কোল্ড স্টার্ট" ঘটে যখন আপনার অ্যাপটি চালু করা হয়, কিন্তু সেটি আগে মেমরিতে সাসপেন্ড করা ছিল না।

কোল্ড স্টার্টের একটি উদাহরণ হলো যখন কোনো ব্যবহারকারী প্রথমবারের মতো আপনার অ্যাপটি খোলেন। কোল্ড স্টার্টের ক্ষেত্রে, আগে থেকে লোড করা কোনো অ্যাপ ওপেন অ্যাড থাকে না যা সাথে সাথেই দেখানোর জন্য প্রস্তুত থাকে। আপনি যখন কোনো অ্যাডের জন্য অনুরোধ করেন এবং তার উত্তর পান, এই দুইয়ের মধ্যবর্তী বিলম্ব এমন একটি পরিস্থিতি তৈরি করতে পারে যেখানে ব্যবহারকারীরা অপ্রাসঙ্গিক কোনো অ্যাড দেখে অবাক হওয়ার আগে অল্প সময়ের জন্য আপনার অ্যাপটি ব্যবহার করতে পারেন। এটি পরিহার করা উচিত, কারণ এটি একটি খারাপ ব্যবহারকারী অভিজ্ঞতা।

কোল্ড স্টার্টের সময় অ্যাপ ওপেন অ্যাড ব্যবহার করার সবচেয়ে ভালো উপায় হলো, আপনার গেম বা অ্যাপের অ্যাসেটগুলো লোড করার জন্য একটি লোডিং স্ক্রিন ব্যবহার করা এবং শুধুমাত্র লোডিং স্ক্রিন থেকেই বিজ্ঞাপনটি দেখানো। যদি আপনার অ্যাপ লোড হওয়া সম্পন্ন করে এবং ব্যবহারকারীকে অ্যাপের মূল কন্টেন্টে পাঠিয়ে দেয়, তাহলে বিজ্ঞাপনটি দেখাবেন না।

সর্বোত্তম অনুশীলন

অ্যাপ খোলার বিজ্ঞাপনগুলো আপনার অ্যাপের লোডিং স্ক্রিন, অ্যাপটি প্রথম চালু হওয়ার সময় এবং অ্যাপ পরিবর্তনের সময় অর্থ উপার্জনে সাহায্য করে, কিন্তু কিছু সেরা অনুশীলন মনে রাখা জরুরি, যাতে আপনার ব্যবহারকারীরা অ্যাপটি ব্যবহার করে আনন্দ পান। এক্ষেত্রে যা করা সবচেয়ে ভালো:

  • Show your first app open ad after your users have used your app a few times.
  • Show app open ads during times when your users would otherwise be waiting for your app to load.
  • অ্যাপ খোলার বিজ্ঞাপনের নিচে যদি কোনো লোডিং স্ক্রিন থাকে এবং বিজ্ঞাপনটি বন্ধ হওয়ার আগেই আপনার লোডিং স্ক্রিনটি লোড হয়ে যায়, তাহলে আপনি onAdDismissedFullScreenContent() মেথডের মাধ্যমে লোডিং স্ক্রিনটি বন্ধ করে দিতে পারেন।

উদাহরণ

Download and run the example app that demonstrates the use of the GMA Next-Gen SDK .