在此方法中进行NSNotification的好或坏做法:

时间:2014-05-04 18:00:51

标签: ios objective-c admob iad

我按照这个问题How to properly hide these ad banners?上的答案获得谷歌AdMob补充iAd,当它不可用时它完美无缺,但即使我使用了{{1},也很少出现谷歌或苹果广告告诉它不要。我在游戏场景中使用NSNotifcation隐藏了NSNotification方法中的横幅,但有时它们仍会出现。我认为这与互联网连接有关,当请求成为一种印象时。话虽如此:

我在initWithSize方法中放置了我的hideAd通知,以确保广告被隐藏。这会不会随着时间的推移减慢我的游戏速度?

在sprite-kit游戏中发送每个帧更新的NSNotification是不是很糟糕?

1 个答案:

答案 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通道以使其透明,但这会产生性能影响,如果您正确调整大小,则不需要。