2016-03-13 46 views
0

我有一個廣告,以我的主要VC呈現爲模態。廣告定時 - 在用戶使用該應用5秒後,每次啓動應用都會顯示一次。以下是VC模式被推動的主要VC。iOS通過主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

你應該出示它在你的主窗口rootViewController這樣的:

[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:adViewController animated:YES completion:nil]; 

這其中總會有它的視圖層次視圖,可以保證您的廣告視圖控制器會高於一切呈現。

+0

所以剛從'rootViewController'出現。如果我在主屏幕的'viewDidLoad'中獲得對'rootViewController'的引用,然後用戶轉到另一個屏幕?它會改變和同樣的問題。 – noobsmcgoobs

+0

不要預先獲得對'rootViewController'的引用!只有當你需要像我一樣展示時才能得到它。 – deadbeef

+0

在'AppDelegate'中打電話嗎? – noobsmcgoobs