我正在尝试将NavigationBanner
iAdSuite
示例实现到我的项目中,以便可以在多个 View Controller 之间共享一个AdBannerView
实例,但是我一直收到以下错误:
Error Domain = ADErrorDomain代码= 2“该操作无法完成。加载已被限制
我已经将相关代码完全从当前iAdSuite复制到了自己的应用中,并遇到此错误。实际上,该错误在Apple自己的NavigationBanner的iAdSuite示例中是可重复的(这是我尝试实现的示例)。通过添加以下错误可以看到:
NSLog (@"%@",error);
至:
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
要在
iAdSuite
中复制该问题,请执行以下操作:这对于我的应用程序来说是一个问题,因为如果没有连接,我想隐藏iAd,然后在恢复连接后重新显示它。如果应用收到节流错误,则可能会延迟很长时间才能收到另一个广告。
如何避免节流误差?我当时在想bannerView需要先删除再重新添加,但无法弄清楚如何正确执行此操作。
最后要注意的一点是,当前的iAdSuite使用ARC,而我的应用程序却未使用。即使这样,我的应用程序和iAdSuite都发生错误。
最佳答案
尝试使用Apple的“Reachability”项目代码来检测网络状态。 Github上有ARC兼容版本。 (https://github.com/tonymillion/Reachability)将Reachability.h导入头文件后,可以尝试下面的代码。可达性将检测是否有任何可用的连接,否则,iAd将移出屏幕。希望这可以帮助!
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
if(status == NotReachable)
{
// No internet connection. We need to move the iAd off screen.
NSLog(@"No network connection. iAd will hide.");
banner.frame = CGRectOffset(banner.frame, 320, 0);
}
if(status == ReachableViaWifi)
{
banner.frame = CGRectOffset(banner.frame, your position here);
}
if(status == ReachableViaWWAN)
{
banner.frame = CGRectOffset(banner.frame, your position here);
}
}
关于objective-c - 从后台重新启动应用后,iAd的加载受到限制(也发生在iAdSuite中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8107558/