ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन

यह गाइड, उन पब्लिशर के लिए है जो ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों को इंटिग्रेट कर रहे हैं.

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

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

ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों को लागू करने के लिए, यह तरीका अपनाएं:

  1. ऐसी मैनेजर क्लास बनाएं जो विज्ञापन दिखाने से पहले उसे लोड कर ले.
  2. ऐप्लिकेशन के फ़ोरग्राउंड वाले इवेंट के दौरान विज्ञापन दिखाएं.
  3. प्रज़ेंटेशन कॉलबैक मैनेज करें.

ज़रूरी शर्तें

हमेशा टेस्ट विज्ञापनों से टेस्ट करें

अपने ऐप्लिकेशन बनाते और उनकी जांच करते समय पक्का करें कि आप विज्ञापनों के बजाय टेस्ट विज्ञापनों का इस्तेमाल करें लाइव, प्रोडक्शन विज्ञापन. ऐसा न करने पर, आपका खाता निलंबित किया जा सकता है.

टेस्ट विज्ञापन लोड करने का सबसे आसान तरीका, ऐप्लिकेशन के लिए हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है विज्ञापन खोलें:

/21775744923/example/app-open

इसे खास तौर पर, हर अनुरोध के लिए टेस्ट विज्ञापन दिखाने के लिए कॉन्फ़िगर किया गया है. साथ ही, कोडिंग, टेस्टिंग, और डीबग करने के दौरान, अपने ऐप्लिकेशन में इसका इस्तेमाल किया जा सकता है. बस पक्का करें कि ऐप्लिकेशन पब्लिश करने से पहले, आपने इसे अपनी विज्ञापन यूनिट के आईडी से बदल दिया हो.

Mobile Ads SDK के टेस्ट विज्ञापनों के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, जांच करें Google Ads.

मैनेजर क्लास लागू करना

आपका विज्ञापन तुरंत दिखने लगेगा, इसलिए बेहतर होगा कि आप विज्ञापन लोड होने से पहले उसे लोड करें उसे दिखाएं. इस तरह, उपयोगकर्ता के एंट्री करते ही आपका विज्ञापन तैयार हो जाएगा आपका ऐप्लिकेशन. मैनेजर क्लास लागू करें, ताकि ज़रूरत पड़ने पर पहले ही विज्ञापन अनुरोध किए जा सकें पर क्लिक करें.

AppOpenAdManager नाम की एक नई सिंगलटन क्लास बनाएं और उसे इस तौर पर भरें अनुसरण करता है:

Swift

class AppOpenAdManager: NSObject {
  var appOpenAd: GADAppOpenAd?
  var isLoadingAd = false.
  var isShowingAd = false

  static let shared = AppOpenAdManager()

  private func loadAd() async {
    // TODO: Implement loading an ad.
  }

  func showAdIfAvailable() {
    // TODO: Implement showing an ad.
  }

  private func isAdAvailable() -> Bool {
    // Check if ad exists and can be shown.
    return appOpenAd != nil
  }
}

Objective-C

@interface AppOpenAdManager ()
@property(nonatomic, strong) GADAppOpenAd *appOpenAd;
@property(nonatomic, assign) BOOL isLoadingAd;
@property(nonatomic, assign) BOOL isShowingAd;

@end

@implementation AppOpenAdManager

+ (nonnull AppOpenAdManager *)sharedInstance {
  static AppOpenAdManager *instance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    instance = [[AppOpenAdManager alloc] init];
  });
  return instance;
}

- (void)loadAd {
  // TODO: Implement loading an ad.
}

// Add this method to the .h file.
- (void)showAdIfAvailable {
  // TODO: Implement showing an ad.
}

- (BOOL)isAdAvailable {
  // Check if ad exists and can be shown.
  return self.appOpenAd != nil;
}

@end

विज्ञापन लोड करें

अगले चरण में, loadAd() का तरीका भरें.

Swift

private func loadAd() async {
  // Do not load ad if there is an unused ad or one is already loading.
  if isLoadingAd || isAdAvailable() {
    return
  }
  isLoadingAd = true

  do {
    appOpenAd = try await GADAppOpenAd.load(
      withAdUnitID: "/21775744923/example/app-open", request: GAMRequest())
  } catch {
    print("App open ad failed to load with error: \(error.localizedDescription)")
  }
  isLoadingAd = false
}

Objective-C

- (void)loadAd {
  // Do not load ad if there is an unused ad or one is already loading.
  if (self.isLoadingAd || [self isAdAvailable]) {
    return;
  }
  self.isLoadingAd = YES;

  [GADAppOpenAd loadWithAdUnitID:@"/21775744923/example/app-open"
                       request:[GAMRequest request]
             completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
               self.isLoadingAd = NO;
               if (error) {
                 NSLog(@"Failed to load app open ad: %@", error);
                 return;
               }
               self.appOpenAd = appOpenAd;
             }];
}

विज्ञापन दिखाएं

अगला चरण, showAdIfAvailable() तरीके को भरना है. अगर कोई विज्ञापन उपलब्ध है, तो यह तरीका विज्ञापन को लोड करने की कोशिश करता है.

Swift

func showAdIfAvailable() {
  // If the app open ad is already showing, do not show the ad again.
  guard !isShowingAd else { return }

  // If the app open ad is not available yet but is supposed to show, load
  // a new ad.
  if !isAdAvailable() {
    Task {
      await loadAd()
    }
    return
  }

  if let ad = appOpenAd {
    isShowingAd = true
    ad.present(fromRootViewController: nil)
  }
}

Objective-C

- (void)showAdIfAvailable {
  // If the app open ad is already showing, do not show the ad again.
  if (self.isShowingAd) {
    return;
  }

  // If the app open ad is not available yet but is supposed to show, load a
  // new ad.
  if (![self isAdAvailable]) {
    [self loadAd];
    return;
  }

  self.isShowingAd = YES;
  [self.appOpenAd presentFromRootViewController:nil];
}

ऐप्लिकेशन के फ़ोरग्राउंड वाले इवेंट के दौरान विज्ञापन दिखाएं

ऐप्लिकेशन के चालू होने पर, showAdIfAvailable() पर कॉल करके विज्ञापन दिखाएं, अगर एक उपलब्ध हो या एक नया लोड करता हो.

Swift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  // ...

  func applicationDidBecomeActive(_ application: UIApplication) {
    // Show the app open ad when the app is foregrounded.
    AppOpenAdManager.shared.showAdIfAvailable()
  }
}

Objective-C

@implementation AppDelegate
// ...

- (void) applicationDidBecomeActive:(UIApplication *)application {
  // Show the app open ad when the app is foregrounded.
  [AppOpenAdManager.sharedInstance showAdIfAvailable];
}

@end

प्रज़ेंटेशन कॉलबैक मैनेज करना

जब आपका ऐप्लिकेशन, ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन दिखाता है, तो आपको इन बातों पर निर्भर रहना चाहिए: प्रज़ेंटेशन से जुड़े कुछ इवेंट मैनेज करने के लिए, GADFullScreenContentDelegate. खास तौर पर, जब पहला विज्ञापन दिखना बंद हो जाए, तो आपको ऐप्लिकेशन खोलने पर दिखने वाले अगले विज्ञापन का अनुरोध करना होगा.

अपनी AppOpenAdManager क्लास में, यह जोड़ें:

Swift

class AppOpenAdManager: NSObject, GADFullScreenContentDelegate {
  // ...

  private func loadAd() async {
    // Do not load ad if there is an unused ad or one is already loading.
    if isLoadingAd || isAdAvailable() {
      return
    }
    isLoadingAd = true

    do {
      appOpenAd = try await GADAppOpenAd.load(
        withAdUnitID: "/21775744923/example/app-open", request: GAMRequest())
      appOpenAd?.fullScreenContentDelegate = self
    } catch {
      print("App open ad failed to load with error: \(error.localizedDescription)")
    }
    isLoadingAd = false
  }

  // ...

  // MARK: - GADFullScreenContentDelegate methods

  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("App open ad will be presented.")
  }

  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    appOpenAd = nil
    isShowingAd = false
    // Reload an ad.
    Task {
      await loadAd()
    }
  }

  func ad(
    _ ad: GADFullScreenPresentingAd,
    didFailToPresentFullScreenContentWithError error: Error
  ) {
    appOpenAd = nil
    isShowingAd = false
    // Reload an ad.
    Task {
      await loadAd()
    }
  }
}

Objective-C

@interface AppOpenAdManager () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADAppOpenAd *appOpenAd
@property(nonatomic, assign) BOOL isLoadingAd;
@property(nonatomic, assign) BOOL isShowingAd;

@end

@implementation AppOpenAdManager

// ...

- (void)loadAd {
  // Do not load ad if there is an unused ad or one is already loading.
  if (self.isLoadingAd || [self isAdAvailable]) {
    return;
  }
  self.isLoadingAd = YES;

  [GADAppOpenAd loadWithAdUnitID:@"/21775744923/example/app-open"
                       request:[GAMRequest request]
             completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
              self.isLoadingAd = NO;
               if (error) {
                 NSLog(@"Failed to load app open ad: %@", error);
                 return;
               }
               self.appOpenAd = appOpenAd;
               self.appOpenAd.fullScreenContentDelegate = self;
             }];
}

- (BOOL)isAdAvailable {
  // Check if ad exists and can be shown.
  return self.appOpenAd != nil;
}

// ...

#pragma mark - GADFullScreenContentDelegate methods

- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad is will be presented.");
}

- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  self.appOpenAd = nil;
  self.isShowingAd = NO;
  // Reload an ad.
  [self loadAd];
}

- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
  self.appOpenAd = nil;
  self.isShowingAd = NO;
  // Reload an ad.
  [self loadAd];
}

@end

विज्ञापन दिखना बंद होने के बारे में सोचें

यह पक्का करने के लिए कि आप ऐसा विज्ञापन न दिखाएं जिसकी समयसीमा खत्म हो चुकी है, आप ऐप्लिकेशन डेलिगेट को एक तरीका जोड़ सकते हैं यह सुविधा, आपके विज्ञापन रेफ़रंस के लोड होने के बाद से बीते समय की जांच करती है.

अपने AppOpenAdManager में loadTime नाम की एक Date प्रॉपर्टी जोड़ें और प्रॉपर्टी सेट अप करता है. इसके बाद, ऐसा तरीका जोड़ा जा सकता है जिससे true दिखे, अगर आपका विज्ञापन लोड होने के बाद तय घंटों से कम समय बीत चुका है. विज्ञापन दिखाने से पहले, पक्का करें कि आपने विज्ञापन रेफ़रंस की पुष्टि कर ली है.

Swift

class AppOpenAdManager: NSObject, GADFullScreenContentDelegate {
  var appOpenAd: GADAppOpenAd?
  var isLoadingAd = false.
  var isShowingAd = false
  var loadTime: Date?
  let fourHoursInSeconds = TimeInterval(3600 * 4)

  // ...

  private func loadAd() async {
    // Do not load ad if there is an unused ad or one is already loading.
    if isLoadingAd || isAdAvailable() {
      return
    }
    isLoadingAd = true

    do {
      appOpenAd = try await GADAppOpenAd.load(
        withAdUnitID: "/21775744923/example/app-open", request: GAMRequest())
      appOpenAd?.fullScreenContentDelegate = self
      loadTime = Date()
    } catch {
      print("App open ad failed to load with error: \(error.localizedDescription)")
    }
    isLoadingAd = false
  }

  private func wasLoadTimeLessThanFourHoursAgo() -> Bool {
    guard let loadTime = loadTime else { return false }
    // Check if ad was loaded more than four hours ago.
    return Date().timeIntervalSince(loadTime) < fourHoursInSeconds
  }

  private func isAdAvailable() -> Bool {
    // Check if ad exists and can be shown.
    return appOpenAd != nil && wasLoadTimeLessThanFourHoursAgo()
  }
}

Objective-C

static NSTimeInterval const fourHoursInSeconds = 3600 * 4;

@interface AppOpenAdManager () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADAppOpenAd *appOpenAd
@property(nonatomic, assign) BOOL isLoadingAd;
@property(nonatomic, assign) BOOL isShowingAd;
@property(weak, nonatomic) NSDate *loadTime;

@end

@implementation AppOpenAdManager

// ...

- (void)loadAd {
  // Do not load ad if there is an unused ad or one is already loading.
  if (self.isLoadingAd || [self isAdAvailable]) {
    return;
  }
  self.isLoadingAd = YES;

  [GADAppOpenAd loadWithAdUnitID:@"/21775744923/example/app-open"
                       request:[GAMRequest request]
             completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
              self.isLoadingAd = NO;
               if (error) {
                 NSLog(@"Failed to load app open ad: %@", error);
                 return;
               }
               self.appOpenAd = appOpenAd;
               self.appOpenAd.fullScreenContentDelegate = self;
               self.loadTime = [NSDate date];
             }];
}

- (BOOL)wasLoadTimeLessThanFourHoursAgo {
  // Check if ad was loaded more than four hours ago.
  return [[NSDate Date] timeIntervalSinceDate:self.loadTime] < fourHoursInSeconds;
}

- (BOOL)isAdAvailable {
  // Check if ad exists and can be shown.
  return self.appOpenAd != nil && [self wasLoadTimeLessThanFourHoursAgo];
}

@end

कोल्ड स्टार्ट और लोड हो रही स्क्रीन

इस दस्तावेज़ में यह माना गया है कि ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन सिर्फ़ तब दिखाए जाते हैं, जब उपयोगकर्ता जब मेमोरी में ऐप्लिकेशन निलंबित हो जाता है, तब उसे अपने ऐप्लिकेशन को स्क्रीन पर दिखाने की सुविधा चालू करें. "कोल्ड स्टार्ट" तब होते हैं, जब आपका ऐप्लिकेशन लॉन्च किया जाता है, लेकिन उसे पहले मेमोरी में निलंबित नहीं किया गया था.

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

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

सबसे सही तरीके

Google की मदद से, ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापनों की मदद से, ऐप्लिकेशन की लोडिंग स्क्रीन से कमाई की जा सकती है. हालांकि, सबसे सही तरीकों को ध्यान में रखना ज़रूरी है, ताकि उपयोगकर्ता आपका ऐप्लिकेशन. ये काम ज़रूर करें:

  • अपना पहला ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन तब तक इंतज़ार करें, जब तक कि आपके उपयोगकर्ता आपकी ऐप को कुछ बारते हैं.
  • उस समय ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन दिखाएं जब आपके उपयोगकर्ता इंतज़ार कर रहे हों को लोड करने में आपकी मदद कर सकता है.
  • अगर ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन के नीचे, लोड हो रही स्क्रीन दिख रही है और लोड हो रही स्क्रीन भी दिख रही है विज्ञापन के खारिज होने से पहले पूरी तरह लोड होता है, तो हो सकता है कि आप adDidDismissFullScreenContent तरीके में स्क्रीन लोड हो रही है.

GitHub पर उदाहरण देखें

Swift Objective-C

अगले चरण

उपयोगकर्ता की निजता के बारे में ज़्यादा जानें.