निश्चित रूप से काम करेगा, लेकिन एकमात्र समस्या यह है कि जब आप विज्ञापन के प्रतिनिधि को अपडेट करते हैं, तो यह वास्तव में विज्ञापन के लिए नए प्रतिनिधि को तब तक नहीं लेगा जब तक आप स्पष्ट रूप से नया नहीं बनाते विज्ञापन अनुरोध, इसलिए आपके पुराने विचार विज्ञापन से कोई अधिसूचना प्राप्त करेंगे। मैं 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];
}
आप एक दृश्य को कई दृश्यों के सबव्यूव के रूप में नहीं जोड़ सकते हैं। – beryllium