2014-08-29 66 views
2

我目前正在开发一个Spritekit项目。Spritekit - 如何隐藏特定场景的iAd横幅广告?

我有3个场景:MainMenu的,游戏,GAMEOVER

我想有网络成瘾显示,只有当用户在游戏场景和GAMEOVER现场。

这是我ViewController.m增加iAd我当前的代码:

- (void) viewWillLayoutSubviews 
{ 

     // For iAds 
     _bannerView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner]; 
     _bannerView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
     _bannerView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth; 
     _bannerView.delegate = self; 
     _bannerView.hidden = YES; 
     [self.view addSubview:_bannerView]; 
} 

#pragma mark - iAds delegate methods 
    - (void)bannerViewDidLoadAd:(ADBannerView *)banner { 
     // Occurs when an ad loads successfully 
     _bannerView.hidden = NO; 
    } 

    - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
     // Occurs when an ad fails to load 
     _bannerView.hidden = YES; 
    } 

    - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { 
     // Occurs when the user taps on ad and opens it 


     return YES; 
    } 

    - (void)bannerViewActionDidFinish:(ADBannerView *)banner { 
     // Occurs when the ad finishes full screen 
    } 

的问题是,因为MainMenu的场面,以显示第一现场,旗帜显示有在成功加载广告。 我该如何让它仅在用户处于游戏场景和Gameover场景时出现?

回答

5

这里最好的方法是使用你的NSNotificationCenter:

注册通知 - (void) viewWillLayoutSubviews

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"hideAd" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil]; 


这里办理通知

- (void)handleNotification:(NSNotification *)notification 
{ 
    if ([notification.name isEqualToString:@"hideAd"]) 
     { 
      // hide your banner; 
    }else if ([notification.name isEqualToString:@"showAd"]) 
     { 
      // show your banner 
    } 
} 


而在你scense

[[NSNotificationCenter defaultCenter] postNotificationName:@"showAd" object:nil]; //Sends message to viewcontroller to show ad. 

[[NSNotificationCenter defaultCenter] postNotificationName:@"hideAd" object:nil]; //Sends message to viewcontroller to hide ad. 

谢谢,祝你好运。

+0

我试过这个,这对我很有用。谢谢! – aresz 2014-09-01 02:11:34