ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन, एक खास विज्ञापन फ़ॉर्मैट है. यह उन पब्लिशर के लिए है जो अपने ऐप्लिकेशन की लोड स्क्रीन से कमाई करना चाहते हैं. ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों को किसी भी समय बंद किया जा सकता है. इन्हें इस तरह से डिज़ाइन किया गया है कि ये तब दिखें, जब उपयोगकर्ता आपके ऐप्लिकेशन को फ़ोरग्राउंड में लाएं.
ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों में, स्क्रीन के एक छोटे से हिस्से पर आपके ब्रैंड का नाम दिखता है, जिससे उपयोगकर्ताओं को पता चले कि वे आपके ऐप्लिकेशन का इस्तेमाल कर रहे हैं. ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन का उदाहरण यहां देखें:

ज़रूरी शर्तें
जारी रखने से पहले, ये काम करें:
- Flutter प्लगिन का 0.13.6 या इसके बाद का वर्शन इंस्टॉल करें.
- Google Mobile Ads Flutter Plugin को सेट अप करें. आपके Flutter ऐप्लिकेशन में Google Mobile Ads Flutter Plugin इंपोर्ट किया गया होना चाहिए.
हमेशा टेस्ट विज्ञापनों का इस्तेमाल करके टेस्ट करना
अपने ऐप्लिकेशन बनाने और उनकी टेस्टिंग करने के लिए, लाइव और प्रोडक्शन विज्ञापन इस्तेमाल करने के बजाय, टेस्ट विज्ञापन इस्तेमाल करें. ऐसा न करने पर, आपका खाता निलंबित किया जा सकता है.
टेस्ट विज्ञापन लोड करने का सबसे आसान तरीका, Android और iOS के इनाम वाले विज्ञापनों के लिए, हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है:
/21775744923/example/app-open
इन्हें इस तरह कॉन्फ़िगर किया गया है कि हर अनुरोध के लिए टेस्ट विज्ञापन दिखाए जा सकें. कोडिंग, टेस्टिंग, और डीबग करने के दौरान, इनका इस्तेमाल अपने ऐप्लिकेशन में किया जा सकता है. हालांकि, ऐप्लिकेशन पब्लिश करने से पहले, इन्हें अपने विज्ञापन यूनिट आईडी से बदल लें.
लागू करना
ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों को इंटिग्रेट करने के मुख्य चरण:
- एक ऐसी यूटिलिटी क्लास बनाएं जो विज्ञापन दिखाने से पहले उसे लोड करे.
- कोई विज्ञापन लोड करें.
- कॉलबैक के लिए रजिस्टर करें और विज्ञापन दिखाएं.
- स्क्रीन पर ऐप्लिकेशन खोलने के दौरान विज्ञापन दिखाने के लिए,
AppStateEventNotifier.appStateStreamकी सदस्यता लें.
यूटिलिटी क्लास बनाना
विज्ञापन लोड करने के लिए, AppOpenAdManager नाम की एक नई क्लास बनाएं. यह क्लास, लोड किए गए विज्ञापन और हर प्लैटफ़ॉर्म के लिए विज्ञापन यूनिट आईडी को ट्रैक करने के लिए, इंस्टेंस वैरिएबल को मैनेज करती है.
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'dart:io' show Platform;
class AppOpenAdManager {
String adUnitId = '/21775744923/example/app-open';
AppOpenAd? _appOpenAd;
bool _isShowingAd = false;
/// Load an AppOpenAd.
void loadAd() {
// We will implement this below.
}
/// Whether an ad is available to be shown.
bool get isAdAvailable {
return _appOpenAd != null;
}
}
विज्ञापन लोड करना
ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन, उपयोगकर्ताओं के ऐप्लिकेशन में जाने से पहले तैयार होना चाहिए. विज्ञापन दिखाने से पहले, विज्ञापन दिखाने का अनुरोध करने के लिए यूटिलिटी क्लास लागू करें.
विज्ञापन लोड करने के लिए, AppOpenAd क्लास पर loadWithAdManagerAdRequest तरीके का इस्तेमाल किया जाता है. लोड करने के तरीके के लिए, विज्ञापन यूनिट आईडी, ओरिएंटेशन मोड, AdManagerAdRequest ऑब्जेक्ट, और पूरा होने पर काम आने वाले हैंडलर ज़रूरी होता है. यह हैंडलर विज्ञापन लोड होने की प्रोसेस के सफल होने या न होने पर कॉल किया जाता है. लोड किए गए AppOpenAd ऑब्जेक्ट को पूरा होने वाले हैंडलर में पैरामीटर के तौर पर दिया जाता है. यहां दिए गए उदाहरण में, AppOpenAd को लोड करने का तरीका बताया गया है.
public class AppOpenAdManager {
...
/// Load an AppOpenAd.
void loadAd() {
AppOpenAd.loadWithAdManagerAdRequest(
adUnitId: adUnitId,
adManagerAdRequest: AdManagerAdRequest(),
adLoadCallback: AppOpenAdLoadCallback(
onAdLoaded: (ad) {
_appOpenAd = ad;
},
onAdFailedToLoad: (error) {
print('AppOpenAd failed to load: $error');
// Handle the error.
},
),
);
}
}
विज्ञापन दिखाना और फ़ुलस्क्रीन कॉलबैक मैनेज करना
विज्ञापन दिखाने से पहले, हर उस विज्ञापन इवेंट के लिए FullScreenContentCallback रजिस्टर करें जिसे आपको सुनना है.
public class AppOpenAdManager {
...
public void showAdIfAvailable() {
if (!isAdAvailable) {
print('Tried to show ad before available.');
loadAd();
return;
}
if (_isShowingAd) {
print('Tried to show ad while already showing an ad.');
return;
}
// Set the fullScreenContentCallback and show the ad.
_appOpenAd!.fullScreenContentCallback = FullScreenContentCallback(
onAdShowedFullScreenContent: (ad) {
_isShowingAd = true;
print('$ad onAdShowedFullScreenContent');
},
onAdFailedToShowFullScreenContent: (ad, error) {
print('$ad onAdFailedToShowFullScreenContent: $error');
_isShowingAd = false;
ad.dispose();
_appOpenAd = null;
},
onAdDismissedFullScreenContent: (ad) {
print('$ad onAdDismissedFullScreenContent');
_isShowingAd = false;
ad.dispose();
_appOpenAd = null;
loadAd();
},
);
}
}
अगर कोई उपयोगकर्ता, ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन पर क्लिक करके आपके ऐप्लिकेशन से बाहर चला जाता है और फिर वापस आता है, तो पक्का करें कि उसे ऐप्लिकेशन खोलने पर दिखने वाला दूसरा विज्ञापन न दिखे.
स्क्रीन पर ऐप्लिकेशन खोलने से जुड़े इवेंट को मॉनिटर करने की अनुमति
ऐप्लिकेशन को स्क्रीन पर खोलने से जुड़े इवेंट की सूचना पाने के लिए, आपको AppStateEventNotifier.appStateStream की सदस्यता लेनी होगी और foreground इवेंट को सुनना होगा.
import 'package:app_open_example/app_open_ad_manager.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
/// Listens for app foreground events and shows app open ads.
class AppLifecycleReactor {
final AppOpenAdManager appOpenAdManager;
AppLifecycleReactor({required this.appOpenAdManager});
void listenToAppStateChanges() {
AppStateEventNotifier.startListening();
AppStateEventNotifier.appStateStream
.forEach((state) => _onAppStateChanged(state));
}
void _onAppStateChanged(AppState appState) {
// Try to show an app open ad if the app is being resumed and
// we're not already showing an app open ad.
if (appState == AppState.foreground) {
appOpenAdManager.showAdIfAvailable();
}
}
}
अब आप अपने AppLifecycleReactor को शुरू कर सकते हैं और ऐप्लिकेशन के लाइफ़साइकल में होने वाले बदलावों को सुनना शुरू कर सकते हैं. उदाहरण के लिए, अपने होम पेज से:
import 'package:app_open_example/app_open_ad_manager.dart';
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'app_lifecycle_reactor.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'App Open Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'App Open Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
/// Example home page for an app open ad.
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
late AppLifecycleReactor _appLifecycleReactor;
@override
void initState() {
super.initState();
AppOpenAdManager appOpenAdManager = AppOpenAdManager()..loadAd();
_appLifecycleReactor = AppLifecycleReactor(
appOpenAdManager: appOpenAdManager);
}
विज्ञापनों के एक्सपायर होने की तारीख का ध्यान रखें
यह पक्का करने के लिए कि आपका विज्ञापन समयसीमा खत्म होने के बाद न दिखे, AppOpenAdManager में एक टाइमस्टैंप जोड़ें. इससे आपको यह पता चल सकेगा कि आपका विज्ञापन लोड हुए कितना समय हो गया है.
इसके बाद, उस टाइमस्टैंप का इस्तेमाल करके देखें कि विज्ञापन अब भी मान्य है या नहीं.
/// Utility class that manages loading and showing app open ads.
class AppOpenAdManager {
...
/// Maximum duration allowed between loading and showing the ad.
final Duration maxCacheDuration = Duration(hours: 4);
/// Keep track of load time so we don't show an expired ad.
DateTime? _appOpenLoadTime;
...
/// Load an AppOpenAd.
void loadAd() {
AppOpenAd.loadWithAdManagerAdRequest(
adUnitId: adUnitId,
orientation: AppOpenAd.orientationPortrait,
adManagerAdRequest: AdManagerAdRequest(),
adLoadCallback: AppOpenAdLoadCallback(
onAdLoaded: (ad) {
print('$ad loaded');
_appOpenLoadTime = DateTime.now();
_appOpenAd = ad;
},
onAdFailedToLoad: (error) {
print('AppOpenAd failed to load: $error');
},
),
);
}
/// Shows the ad, if one exists and is not already being shown.
///
/// If the previously cached ad has expired, this just loads and caches a
/// new ad.
void showAdIfAvailable() {
if (!isAdAvailable) {
print('Tried to show ad before available.');
loadAd();
return;
}
if (_isShowingAd) {
print('Tried to show ad while already showing an ad.');
return;
}
if (DateTime.now().subtract(maxCacheDuration).isAfter(_appOpenLoadTime!)) {
print('Maximum cache duration exceeded. Loading another ad.');
_appOpenAd!.dispose();
_appOpenAd = null;
loadAd();
return;
}
// Set the fullScreenContentCallback and show the ad.
_appOpenAd!.fullScreenContentCallback = FullScreenContentCallback(...);
_appOpenAd!.show();
}
}
कोल्ड स्टार्ट और लोडिंग स्क्रीन
अब तक के दस्तावेज़ में यह माना गया है कि ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन सिर्फ़ तब दिखाए जाते हैं, जब उपयोगकर्ता आपके ऐप्लिकेशन को फ़ोरग्राउंड में लाते हैं. ऐसा तब होता है, जब ऐप्लिकेशन को मेमोरी में निलंबित कर दिया जाता है. "कोल्ड स्टार्ट" तब होता है, जब आपका ऐप्लिकेशन लॉन्च किया जाता है, लेकिन उसे पहले मेमोरी में निलंबित नहीं किया गया था.
कोल्ड स्टार्ट का एक उदाहरण यह है कि जब कोई उपयोगकर्ता आपके ऐप्लिकेशन को पहली बार खोलता है. कोल्ड स्टार्ट के दौरान, आपके पास पहले से लोड किया गया ऐसा कोई ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन नहीं होगा जो तुरंत दिखाया जा सके. विज्ञापन का अनुरोध करने और विज्ञापन मिलने के बीच लगने वाले समय की वजह से, ऐसी स्थिति पैदा हो सकती है जहां उपयोगकर्ता आपके ऐप्लिकेशन का इस्तेमाल कुछ समय के लिए कर सकते हैं. इसके बाद, उन्हें अचानक से ऐसा विज्ञापन दिख सकता है जो उनके काम का न हो. ऐसा करने से बचना चाहिए, क्योंकि इससे उपयोगकर्ता अनुभव खराब होता है.
कोल्ड स्टार्ट के दौरान, ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों का इस्तेमाल करने का सबसे सही तरीका यह है कि आप लोडिंग स्क्रीन का इस्तेमाल करें. इससे आपके गेम या ऐप्लिकेशन की ऐसेट लोड हो सकेंगी. साथ ही, विज्ञापन सिर्फ़ लोडिंग स्क्रीन पर दिखेगा. अगर आपका ऐप्लिकेशन लोड हो गया है और उपयोगकर्ता को आपके ऐप्लिकेशन के मुख्य कॉन्टेंट पर भेज दिया गया है, तो विज्ञापन न दिखाएं.
सबसे सही तरीके
ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों की मदद से, ऐप्लिकेशन की लोडिंग स्क्रीन से कमाई की जा सकती है. ये विज्ञापन तब दिखते हैं, जब ऐप्लिकेशन पहली बार लॉन्च होता है और जब उपयोगकर्ता एक ऐप्लिकेशन से दूसरे ऐप्लिकेशन पर स्विच करता है. हालांकि, सबसे सही तरीकों को ध्यान में रखना ज़रूरी है, ताकि उपयोगकर्ता आपके ऐप्लिकेशन का आनंद ले सकें. इसके लिए, ये काम करें:
- ऐप्लिकेशन खोलने पर दिखने वाला पहला विज्ञापन तब दिखाएं, जब उपयोगकर्ता आपके ऐप्लिकेशन को कुछ बार इस्तेमाल कर लें.
- ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन तब दिखाएं, जब उपयोगकर्ता आपके ऐप्लिकेशन के लोड होने का इंतज़ार कर रहे हों.
- अगर ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन के नीचे लोड होने वाली स्क्रीन है और विज्ञापन खारिज होने से पहले ही स्क्रीन लोड हो जाती है, तो हो सकता है कि आप
onAdDismissedFullScreenContentइवेंट हैंडलर में लोड होने वाली स्क्रीन को खारिज करना चाहें.