iOS के लिए IMA SDK वाला कस्टम यूज़र इंटरफ़ेस

इस गाइड में, iOS के लिए IMA SDK का इस्तेमाल करके अपनी पसंद के मुताबिक विज्ञापन के यूज़र इंटरफ़ेस (यूआई) को लागू करने का तरीका बताया गया है. ऐसा करने के लिए, आपको डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई) को बंद करना होगा. इसके बाद, नया कस्टम यूआई सेट अप करना होगा और फिर SDK टूल से मिली विज्ञापन की जानकारी के साथ नए यूज़र इंटरफ़ेस (यूआई) को पॉप्युलेट करें. यह गाइड बेसिक मकसद-सी का उदाहरण iOS के लिए. आप पूरा कॉन्टेंट डाउनलोड कर सकते हैं पसंद के मुताबिक यूज़र इंटरफ़ेस (यूआई) का उदाहरण.

नए यूज़र इंटरफ़ेस (यूआई) एलिमेंट तय करें

कोई भी कोड लिखने से पहले, स्टोरीबोर्ड में बदलाव करें ज़्यादा जानें बटन, विज्ञापन छोड़ें बटन, और काउंटडाउन टाइमर. पक्का करें कि आपका विज्ञापन छोड़ें बटन "कस्टम" है बटन (जैसा नीचे दिखाया गया है) को बंद करने के लिए स्किप काउंटडाउन टाइमर के अपडेट होने पर ब्लिंक करने से भी रोका जा सकता है.

ज़्यादा जानें बटन

'ज़्यादा जानें' बटन

विज्ञापन छोड़ें बटन

'विज्ञापन छोड़ें' बटन

विज्ञापन काउंटडाउन लेबल

विज्ञापन काउंटडाउन लेबल

पक्का करें कि ये नए एलिमेंट आपके ViewController में वैरिएबल से कनेक्ट किए गए हैं. साथ ही, मौजूदा विज्ञापन और विज्ञापन स्किप किए जाने तक का समय ट्रैक करने के लिए, वैरिएबल जोड़ें. जिसे बाद में इस्तेमाल किया जाता है.

ViewController.m

@property(nonatomic, weak) IBOutlet UIButton *learnMore;
@property(nonatomic, weak) IBOutlet UIButton *skipAd;
@property(nonatomic, weak) IBOutlet UILabel *adCountdown;
@property(nonatomic) NSTimeInterval timeTillSkip;
@property(nonatomic, strong) IMAAd *currentAd;

पहले से मौजूद यूज़र इंटरफ़ेस (यूआई) को बंद करें

सबसे पहले, SDK टूल के बिल्ट-इन यूज़र इंटरफ़ेस (यूआई) को बंद करने के लिए कहें.

ViewController.m

- (void)setUpContentPlayer {
  ...
  IMAAdsRenderingSettings *adsRenderingSettings = [[IMAAdsRenderingSettings alloc] init];
  adsRenderingSettings.disableUi = YES;
  [self.adsManager initializeWithAdsRenderingSettings:adsRenderingSettings];
}

अपनी पसंद के मुताबिक बनाया गया यूज़र इंटरफ़ेस (यूआई) छिपाएं और इसे सिर्फ़ अनुमति मिलने पर दिखाएं

AdSense विज्ञापन जैसे कुछ Google विज्ञापन, कस्टम यूज़र इंटरफ़ेस (यूआई) की अनुमति नहीं देते हैं. इसके बजाय, वे हमेशा अपना यूज़र इंटरफ़ेस (यूआई) रेंडर करते हैं. डिफ़ॉल्ट रूप से, अपनी पसंद के मुताबिक बनाया गया यूज़र इंटरफ़ेस (यूआई) छिपाएं:

ViewController.m

- (void)viewDidLoad {
  ...
  [self hideCustomUi];
  self.timeTillSkip = INFINITY;
  self.learnMore.layer.zPosition = MAXFLOAT;
  self.skipAd.layer.zPosition = MAXFLOAT;
  self.adCountdown.layer.zPosition = MAXFLOAT;
  ...
}

- (void)hideCustomUi {
  self.learnMore.hidden = YES;
  self.adCountdown.hidden = YES;
  self.skipAd.hidden = YES;
}

कस्टम यूज़र इंटरफ़ेस (यूआई) सिर्फ़ तब दिखाएं, जब चल रहा विज्ञापन अपना यूज़र इंटरफ़ेस (यूआई) छिपा रहा हो. हर विज्ञापन के बाद कस्टम यूज़र इंटरफ़ेस (यूआई) छिपाएं, हो सकता है कि बाद में दिखने वाला विज्ञापन ऐसा न करे कस्टम यूज़र इंटरफ़ेस (यूआई) को अनुमति दें:

ViewController.m

- (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event {
  // When the SDK notified you that ads have been loaded, play them.
  if (event.type == kIMAAdEvent_LOADED) {
    [adsManager start];
  } else if (event.type == kIMAAdEvent_STARTED) {
    self.currentAd = event.ad;
    if (self.currentAd.isUiDisabled) {
      [self showCustomUi];
    }
  } else if (event.type == kIMAAdEvent_SKIPPED || event.type == kIMAAdEvent_COMPLETE) {
    [self hideCustomUi];
  } else if (event.type == kIMAAdEvent_TAPPED) {
    // Since you're disabling IMA's built-in UI, you're also losing the
    // UI element that resumes paused ads with a tap. Add this code
    // to resume paused ads when a user taps on them.
    [self.adsManager resume];
  }
}

- (void)showCustomUi {
  self.learnMore.hidden = NO;
  [self.videoView bringSubviewToFront:self.learnMore];
  self.adCountdown.hidden = NO;
  if (self.currentAd.isSkippable) {
    self.skipAd.hidden = NO;
    [self.videoView bringSubviewToFront:self.skipAd];
  } else {
    self.skipAd.hidden = YES;
  }
  self.adCountdown.text = @"";
  [self.skipAd setTitle:@"" forState:UIControlStateNormal];
}

'ज़्यादा जानें' बटन के लिए लॉजिक जोड़ें

वायर अप करने के लिए सबसे पहला यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट ज़्यादा जानें बटन है. "टच अप इनसाइड" बनाएं लिसनर को SDK टूल को यह बताना होगा कि ज़्यादा जानें बटन पर क्लिक किया गया है.

ViewController.m

- (IBAction)onLearnMoreTouch:(id)sender {
  [self.adsManager clicked];
}

काउंटडाउन टाइमर के लिए लॉजिक जोड़ें

इसके बाद, काउंटडाउन टाइमर को वायर अप करें, जो हिसाब लगाने के लिए adsManager:adDidProgressToTime:totalTime: विज्ञापन का बचा हुआ समय.

ViewController.m

- (void)adsManager:(IMAAdsManager *)adsManager
adDidProgressToTime:(NSTimeInterval)mediaTime
         totalTime:(NSTimeInterval)totalTime {
  // Update countdown timer.
  NSMutableString *countdownText = [NSMutableString stringWithString:@"Ad "];
  NSInteger totalAds = self.currentAd.adPodInfo.totalAds;
  if (totalAds > 1) {
    NSInteger position = self.currentAd.adPodInfo.adPosition;
    [countdownText appendString:
        [NSString stringWithFormat:@"%ld of %ld", (long)position, (long)totalAds]];
  }
  NSTimeInterval remainingTime = totalTime - mediaTime;
  [countdownText appendString:[NSString stringWithFormat:@" (%.fs)", remainingTime]];
  self.adCountdown.text = countdownText;
}

'विज्ञापन छोड़ें' बटन के लिए लॉजिक जोड़ें

आखिर में, विज्ञापन छोड़ें बटन को सेटअप करें. यह बटन सिर्फ़ स्किप किए जा सकने वाले बटन के लिए दिखाया जाता है विज्ञापन; काउंटडाउन टाइमर 0 तक पहुंचते ही यह किसी विज्ञापन को स्किप कर देता है. यह कोड जोड़ दिया गया है उसी तरीके का इस्तेमाल करें जो ऊपर काउंटडाउन टाइमर के लिए इस्तेमाल किया जाता है.

ViewController.m

- (void)adsManager:(IMAAdsManager *)adsManager
adDidProgressToTime:(NSTimeInterval)mediaTime
         totalTime:(NSTimeInterval)totalTime {
  ...
  // Update skip button
  if (self.currentAd.isSkippable) {
    self.timeTillSkip = self.currentAd.skipTimeOffset - mediaTime;
    NSString *skipString = @"Skip ad";
    if (self.timeTillSkip > 0) {
      skipString =
          [NSString stringWithFormat:@"Skip this ad in %.f...", self.timeTillSkip];
    }
    // Disable animations while you change the button text to prevent it from blinking. The button
    // type must be "Custom" instead of "System" for this to work. This can be set in the attributes
    // inspector for the button in the storyboard file.
    [UIView setAnimationsEnabled:NO];
    [self.skipAd setTitle:skipString forState:UIControlStateNormal];
    [self.skipAd layoutIfNeeded];
    [UIView setAnimationsEnabled:YES];
  }
}

लागू होने के बाद, हमारे पसंद के मुताबिक यूज़र इंटरफ़ेस (यूआई) का उदाहरण ऐसा दिखता है:

पसंद के मुताबिक बनाए गए यूज़र इंटरफ़ेस (यूआई) का उदाहरण

समस्या का हल

क्या आपके पास कोई ऐसा सैंपल टैग है जिसे विज्ञापन के यूज़र इंटरफ़ेस (यूआई) को बंद करने के लिए चालू किया गया है?
आप इसका यूआरएल कॉपी कर सकते हैं टैग का नमूना और इसे IMA लागू करने के तरीके में चिपकाएं.
मैं डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई) को बंद नहीं कर सकता.
यह पक्का करने के लिए जांच करें कि आपने adsRenderingSettings.disableUi को true पर सेट किया है और getAdsManager को पास कर देता है. यह देखने के लिए जांच करें कि ad.isUiDisabled() true दिखाता है. इसके अलावा, Ad Manager में अपने नेटवर्क का चालू होना ज़रूरी है, ताकि यूज़र इंटरफ़ेस (यूआई) पर क्लिक करें. अगर आप चालू हैं, तो आपके वीएएसटी (वीडियो विज्ञापन देने के लिए टेंप्लेट) में एक Extension होता है, जो ऐसा दिखता है:
<Extension type="uiSettings">
<UiHideable>1</UiHideable>
</Extension>
अगर आपको अब भी समस्या आ रही है, तो अपने खाता मैनेजर से संपर्क करके पता लगाएं भले ही आपने यह सुविधा चालू की हो. कुछ विज्ञापन टाइप के लिए खास यूज़र इंटरफ़ेस (यूआई) होना ज़रूरी है; ये विज्ञापन <UiHideable> वैल्यू के साथ रिटर्न 0 है. अगर आपको इसका सामना करना पड़ता है, तो ट्रैफ़िकिंग टीम को बदलाव करने होंगे, ताकि यह पक्का किया जा सके कि इस तरह के विज्ञापन न दिखाए जाएं.