我有一个广告,作为我的主要VC的模式。广告是定时的 - 在用户使用该应用5秒后,每个应用启动时展示一次。以下是主VC中的模式VC被推送。
-(void)viewDidLoad{
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"firstLaunch"] isEqualToNumber:[NSNumber numberWithInt:1]]) {
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"paidIAP"] isEqualToNumber:[NSNumber numberWithInt:0]] ) {
[self performSelector:@selector(showAdUnit) withObject:self afterDelay:5.0f];
}
}
}
-(void)showAdUnit{
NSLog(@"got to show ad unit");
[ADNetwork showAd:ADNetworkShowStyleInterstitial rootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
但是,如果用户在5秒之前转到应用的其他部分,则广告将因为此警告而无法启动
警告:尝试显示其视图不在窗口层次结构中!
基本上,广告永远不会展示。即使用户点击推送其他屏幕,如何在每次启动时通过主屏幕准确播放一次广告?如果无法做到这一点,我怎样才能将广告推到他们碰巧在的任何屏幕上?
答案 0 :(得分:0)
您应该在主窗口rootViewController
上展示它:
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:adViewController animated:YES completion:nil];
此视图将始终在视图层次结构中显示其视图,并确保您的广告视图控制器将显示在其他所有内容之上。