我按照这个问题How to properly hide these ad banners?上的答案获得谷歌AdMob补充iAd,当它不可用时它完美无缺,但即使我使用了{{1},也很少出现谷歌或苹果广告告诉它不要。我在游戏场景中使用NSNotifcation
隐藏了NSNotification
方法中的横幅,但有时它们仍会出现。我认为这与互联网连接有关,当请求成为一种印象时。话虽如此:
我在initWithSize
方法中放置了我的hideAd通知,以确保广告被隐藏。这会不会随着时间的推移减慢我的游戏速度?
在sprite-kit游戏中发送每个帧更新的NSNotification是不是很糟糕?
答案 0 :(得分:1)
首先,你根本不应该隐藏横幅视图。如果您不想使用它,最好的办法是销毁它,然后再重新创建它。来自Apple's iAD programming guide:
如果用户从带有横幅视图的内容屏幕导航到 没有横幅视图的屏幕,您希望它们打开 那个屏幕很长一段时间,从中删除横幅视图 查看层次结构,将其委托设置为nil并在之前释放它 过渡到新的内容屏幕。更一般地说,避免 当用户看不见时,保持横幅视图。
至于每帧使用NSNotifications并不是一个好主意,因为他们必须同步通知每个广播的听众。对于像这样的情况,委托更好,但正如我所说,你根本不应该做这种事情,只需稍后销毁并重新创建它。
编辑:这是我们在评论中讨论的更新代码。您希望在视图控制器上创建两个这样的方法,但请确保将bannerView放在具有完全相同帧的shell视图中。所以它看起来像这样:
- (void)hideBanner
{
[self.bannerView removeFromSuperview];
self.shellView.hidden = YES;
}
- (void)showBanner
{
self.bannerView = [[ADBannerView alloc] initWithAdType:type];
self.shellView.hidden = NO;
[self.shellView addSubview:self.bannerView];
}
只需确保外壳视图的尺寸与您尝试显示的广告横幅单元的尺寸相同。您可以设置它的alpha通道以使其透明,但这会产生性能影响,如果您正确调整大小,则不需要。