विज्ञापन पहले से लोड करने की सुविधा, GMA Next-Gen SDK में Google की ओर से मैनेज की जाने वाली विज्ञापन लोड करने की सुविधा है. यह आपकी ओर से विज्ञापन लोड करने और उन्हें कैश मेमोरी में सेव करने की प्रोसेस को मैनेज करती है. विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करने के लिए, आपको विज्ञापन लोड करने के तरीके में बदलाव करना होगा. विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करके, परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कस्टम कैश मेमोरी में सेव करने की सुविधा बंद करें और GMA Next-Gen SDK को यह ज़िम्मेदारी सौंपें.
मैन्युअल तरीके से विज्ञापन लोड करने के मुकाबले, विज्ञापन पहले से लोड करने की सुविधा के ये फ़ायदे हैं:
- रेफ़रंस मैनेजमेंट: लोड किए गए विज्ञापनों को सेव करके रखता है, ताकि आपको उन्हें दिखाने के लिए तैयार होने तक रेफ़रंस बनाए न रखने पड़ें.
- अपने-आप रीलोड होना: कैश मेमोरी से कोई विज्ञापन हटाने पर, नया विज्ञापन अपने-आप लोड हो जाता है.
- रीट्राई को मैनेज करना: एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करके, फ़ेल हुए अनुरोधों को अपने-आप रीट्राई करता है.
- समयसीमा खत्म होने की प्रोसेस को मैनेज करना: विज्ञापन की समयसीमा खत्म होने से पहले (आम तौर पर, एक घंटे बाद) उन्हें अपने-आप रीफ़्रेश करता है.
- कैश मेमोरी को ऑप्टिमाइज़ करना: अगर कैश मेमोरी का साइज़ एक से ज़्यादा है, तो GMA Next-Gen SDK सबसे अच्छा विज्ञापन दिखाने के लिए कैश मेमोरी के क्रम को ऑप्टिमाइज़ करता है.
इस गाइड में, विज्ञापन पहले से लोड करने की सुविधा को कॉन्फ़िगर करने, पहले से लोड किए गए विज्ञापन की उपलब्धता की जांच करने, और पहले से लोड किए गए विज्ञापन को दिखाने के बारे में बताया गया है.
ज़रूरी शर्तें
ट्यूटोरियल के साथ आगे बढ़ने से पहले, आपको ये काम करने होंगे:
- GMA Next-Gen SDK का 0.14.0-alpha01 या इसके बाद का वर्शन इंस्टॉल करें.
- सेट अप करें GMA Next-Gen SDK.
- ज़रूरी नहीं: उदाहरण के तौर पर दिया गया ऐप्लिकेशन डाउनलोड करें और चलाएं.
विज्ञापन पहले से लोड करना शुरू करना
विज्ञापन पहले से लोड करने के लिए, startPreload() को कॉल करें. ऐप्लिकेशन शुरू होने पर, इस तरीके को
सिर्फ़ एक बार कॉल करें.
startPreload() को कॉल करने के बाद, GMA Next-Gen SDK विज्ञापनों को अपने-आप
पहले से लोड करता है. साथ ही, पहले से लोड किए गए कॉन्फ़िगरेशन के लिए, फ़ेल हुए अनुरोधों को रीट्राई करता है.
यहां दिए गए उदाहरण में, विज्ञापन पहले से लोड करने की प्रोसेस शुरू की गई है:
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
पहले से लोड किए गए विज्ञापन को पाना और दिखाना
विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करने पर, GMA Next-Gen SDK कैश मेमोरी में सेव किए गए विज्ञापनों को सेव करके रखता है.
कोई विज्ञापन दिखाने के लिए, pollAd() को कॉल करें.
GMA Next-Gen SDK उपलब्ध विज्ञापन को वापस लाता है और बैकग्राउंड में अगले विज्ञापन को अपने-आप पहले से लोड करता है.
जब तक कोई विज्ञापन दिखाने के लिए तैयार न हों, तब तक इस तरीके को कॉल न करें. विज्ञापनों को कैश मेमोरी में सेव रखने से, GMA Next-Gen SDK समयसीमा खत्म हो चुके विज्ञापनों को अपने-आप रीफ़्रेश कर सकता है और कैश मेमोरी को ऑप्टिमाइज़ कर सकता है.
यहां दिए गए उदाहरण में, पहले से लोड किए गए विज्ञापन को वापस लाया गया है और दिखाया गया है:
Kotlin
private fun pollAndShowAd(activity: Activity, adUnitId: String) {
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
ad.show(activity)
}
}
Java
private void pollAndShowAd(Activity activity, String adUnitId) {
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
// Interact with the ad object as needed.
if (ad != null) {
Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
पहले से लोड किए गए विज्ञापन की उपलब्धता की जांच करना
विज्ञापन की उपलब्धता की जांच करने के लिए, इनमें से कोई एक विकल्प चुनें:
- पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी पाना
- पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी सुनना
पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी पाना
यहां दिए गए उदाहरण में, विज्ञापन की उपलब्धता की जांच की गई है:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी सुनना
पहले से लोड करने से जुड़े इवेंट के लिए रजिस्टर करें, ताकि आपको सूचना मिल सके कि विज्ञापन पहले से लोड हो गए हैं या नहीं. साथ ही, यह भी पता चल सके कि विज्ञापन पहले से लोड नहीं हो पाए हैं या विज्ञापन की कैश मेमोरी खत्म हो गई है.
पहले से लोड करने से जुड़े इवेंट, आंकड़ों के मकसद से होते हैं. पहले से लोड करने से जुड़े इवेंट के कॉलबैक में:
startPreload()को कॉल न करें.pollAd()को तब तक कॉल न करें, जब तक विज्ञापन तुरंत न दिखाया जाए.
यहां दिए गए उदाहरण में, विज्ञापन इवेंट के लिए रजिस्टर किया गया है:
Kotlin
private fun startPreloadingWithCallback(adUnitId: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
override fun onAdsExhausted(preloadId: String) {
Log.i(TAG, "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, "Interstitial preload ad $preloadId is available")
}
}
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}
Java
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
TAG,
String.format(
"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(String preloadId) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
@Override
public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
}
};
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}
विज्ञापन पहले से लोड करने की सुविधा बंद करना
अगर आपको सेशन में, पहले से लोड करने के लिए इस्तेमाल की गई आईडी के लिए विज्ञापन फिर से नहीं दिखाने हैं, तो विज्ञापन पहले से लोड करने की सुविधा बंद की जा सकती है. पहले से लोड करने के लिए इस्तेमाल की गई किसी खास आईडी के लिए, विज्ञापन पहले से लोड करने की सुविधा बंद करने के लिए, पहले से लोड करने के लिए इस्तेमाल की गई आईडी के साथ destroy() को कॉल करें.
बफ़र का साइज़ सेट करना
बफ़र का साइज़, मेमोरी में पहले से लोड किए गए विज्ञापनों की संख्या को कंट्रोल करता है. डिफ़ॉल्ट रूप से, Google, मेमोरी की खपत और विज्ञापन दिखाने में लगने वाले समय के बीच बैलेंस बनाए रखने के लिए, बफ़र के साइज़ को ऑप्टिमाइज़ करता है. अगर आपका ऐप्लिकेशन, अगला विज्ञापन लोड होने से पहले विज्ञापन दिखाता है, तो मेमोरी में सेव किए गए विज्ञापनों की संख्या बढ़ाने के लिए, कस्टम बफ़र साइज़ सेट किया जा सकता है. हम ज़्यादा से ज़्यादा चार के बफ़र साइज़ का सुझाव देते हैं.
Kotlin
private fun setBufferSize(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}