我正在尝试将iads添加到我的新精灵套件游戏中。问题是我不需要广告在所有场景上。我已经开始在mainstoryboard中创建一个ADBannerView。之后,我试图使用NSNotification隐藏和显示不同场景中的广告,但它不起作用。即使我已添加到Menu.m(场景)中,广告仍然显示:
[[NSNotificationCenter defaultCenter] postNotificationName:@"hideAd" object:nil];
ViewController.m
-(void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
// Configure the view.
SKView * skView = (SKView *)self.view;
//skView.showsFPS = YES;
//skView.showsNodeCount = YES;
//skView.showsPhysics = YES;
if (!skView.scene) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"hideAd" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil];
SKScene * scene = [Menu sceneWithSize:skView.bounds.size];
NSLog(@"%@", scene);
// Present the scene.
[skView presentScene:scene];
}
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[banner setAlpha:1];
[UIView commitAnimations];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[banner setAlpha:0];
[UIView commitAnimations];
}
- (void)handleNotification:(NSNotification *)notification
{
if ([notification.name isEqualToString:@"hideAd"]) {
[self hidesBanner];
}else if ([notification.name isEqualToString:@"showAd"]) {
[self showsBanner];
}
}
-(void)hidesBanner {
NSLog(@"HIDING BANNER");
[adView setAlpha:0];
}
-(void)showsBanner {
NSLog(@"SHOWING BANNER");
[adView setAlpha:1];
}
答案 0 :(得分:0)
如果您不打算显示iAd,那么创建iAd是不合适的。
根据Apple的Banner View Best Practices:
•仅在打算将其显示给用户时才创建横幅视图。否则,它可能会循环播放广告并耗尽您应用的可用广告列表。
•如果用户从带有横幅视图的内容屏幕导航到没有横幅视图的屏幕,并且您希望它们长时间位于该屏幕上,请从中删除横幅视图查看层次结构,将其委托设置为nil并在转换到新的内容屏幕之前释放它。更一般地说,避免在用户看不见时保持横幅视图。
我记得有一段时间正在阅读hidden
财产,但看着iAd Framework Reference,我找不到任何此类财产。如果您不想在特定场景中显示广告,我建议您遵循Apple的指南。