2012-03-14 13 views
6

मैं अपने ऐप में AdMob का उपयोग करना चाहता हूं और मेरे पास 4 व्यू कंट्रोलर (4 टैब आइटम में) हैं जहां मैं इसे दिखाना चाहता हूं। नमूना दिखाता है, प्रत्येक व्यू कंट्रोलर को इसका उदाहरण बनाने और सबव्यूव के रूप में जोड़ने की आवश्यकता होती है।सभी दृश्य नियंत्रकों में AdMod एकल उदाहरण

मैं अभी भी सोच रहा हूं कि क्या केवल 1 उदाहरण का उपयोग करने के लिए कुछ भी हो सकता है जिसका उपयोग सभी एप्लिकेशन में किया जा सकता है। मैं उसे कैसे कर सकता हूँ?

यदि मैं ऐपडिलेगेट में ऑटोरेलीज़ के रूप में 1 उदाहरण बना देता हूं और प्रत्येक दृश्य में रखता हूं नियंत्रक और दृश्य पर डाउनलोड करें और इसे फिर से जारी करें और फिर अगले टैब आइटम (व्यू कंट्रोलर) में मैं इसे फिर से बनाए रखता हूं ... क्या यह अच्छा दृष्टिकोण है?

उत्तर

2

ऐपडिलेगेट एप्रोच एक अच्छा दृष्टिकोण है लेकिन आपको प्रत्येक व्यू कंट्रोलर में एडमोब के उदाहरण को बनाए रखना नहीं चाहिए और इसे viewDidUnload विधि में रिलीज़ नहीं करना चाहिए। ऐसा करने के बजाय बस प्रत्येक व्यू कंट्रोलर की viewDidLoad विधि में सबव्यूव के रूप में एडमोब का दृश्य जोड़ें। इस तरह AppDelegate में Admob के दृश्य का केवल एक उदाहरण होगा।

उम्मीद है कि यह आपकी मदद करता है।

+0

आप एक दृश्य को कई दृश्यों के सबव्यूव के रूप में नहीं जोड़ सकते हैं। – beryllium

3

आप ऐपडिलेगेट में अपना एडमोब व्यू घोषित कर सकते हैं और इसे विंडो में सबव्यूव के रूप में जोड़ सकते हैं। ऐपडिगेट

7

निश्चित रूप से काम करेगा, लेकिन एकमात्र समस्या यह है कि जब आप विज्ञापन के प्रतिनिधि को अपडेट करते हैं, तो यह वास्तव में विज्ञापन के लिए नए प्रतिनिधि को तब तक नहीं लेगा जब तक आप स्पष्ट रूप से नया नहीं बनाते विज्ञापन अनुरोध, इसलिए आपके पुराने विचार विज्ञापन से कोई अधिसूचना प्राप्त करेंगे। मैं adMob सिंगलटन बनाने के दृष्टिकोण की अनुशंसा करता हूं जो कि किसी भी प्रतिनिधि नोटिफिकेशन को सही दृश्य में आगे बढ़ाएगा।

+(GADMasterViewController *)singleton { 
    static dispatch_once_t pred; 
    static GADMasterViewController *shared = nil; 
    dispatch_once(&pred, ^{ 
    shared = [[GADMasterViewController alloc] init]; 
    }); 
    return shared; 
} 

फिर प्रारंभकर्ता में आप एक ही GADBannerView एक संपत्ति के रूप में प्रारंभ कर सकते हैं:

तो या कुछ और जो इतनी के रूप में एक स्थिर प्रारंभकर्ता है (यकीन है कि यह भी GADBannerViewDelegate प्रोटोकॉल का अनुपालन करता है) एक वर्ग GADMasterViewController बुलाया बनाने इस सिंगलटन की:

:

-(id)init 
{ 
    if (self = [super init]) 
    { 
    self.adBanner = [[GADBannerView alloc] 
        initWithFrame:CGRectMake(0.0, 
               0.0, 
               GAD_SIZE_320x50.width, 
               GAD_SIZE_320x50.height)]; 

    // Has an ad request already been made 
    self.isLoaded = NO; 
    } 
    return self; 
} 

तो फिर तुम एक तरीका है जिसके जैसे currentDelegate रूप में अपने नए adview सेट कर सकते हैं

-(void)resetAdView:(UIViewController<GADBannerViewDelegate> *)rootViewController { 

    if (self.isLoaded) { 
    currentDelegate_ = rootViewController; 
    [rootViewController.view addSubview:self.adBanner]; 
    } 
    else { 
    // The delegate to forward any notifications too 
    currentDelegate_ = rootViewController; 

    self.adBanner.delegate = self; 
    self.adBanner.rootViewController = rootViewController; 
    self.adBanner.adUnitID = kSampleAdUnitID; 

    GADRequest *request = [GADRequest request]; 

    [self.adBanner loadRequest:request]; 
    [rootViewController.view addSubview:self.adBanner]; 
    self.isLoaded = YES; 
    } 
} 

इस बिंदु पर, आप बस किसी भी सूचनाएं जो आप सही ViewController करने के लिए मिलता अग्रेषित करना चाहते हैं, तो एक उदाहरण होगा:

- (void)adViewDidReceiveAd:(GADBannerView *)view { 
    if ([currentDelegate_ respondsToSelector:@selector(adViewDidReceiveAd:)]) { 
    [currentDelegate_ adViewDidReceiveAd:view]; 
    } 
} 

ViewControllerX (एक अपने 4 ViewControllers के) में, आप बस सकता है इसे अपने दृश्य पदानुक्रम में जोड़ें:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    shared = [GADMasterViewController singleton]; 
    [shared resetAdView:self]; 
} 
+0

सभी को धन्यवाद। – Anand

+3

महान उत्तर के लिए, राज, धन्यवाद। इसे पढ़ने वाले हर किसी के लिए, आप http://googleadsdeveloper.blogspot.co.il/2012/04/creating-gadbannerview-singleton-in.html भी पढ़ सकते हैं – kernix

संबंधित मुद्दे