iAD视图在广告关闭时冻结

时间:2014-03-23 18:28:59

标签: ios objective-c xcode sprite-kit iad

好的,所以在对模拟器进行测试后发现这个问题只发生在实际设备上 ...我该如何解决这个问题?

<小时/> 我正在使用SpriteKit创建一个iOS应用程序并正在实现iAD。除了一件事,一切都或多或少地像我期望的那样。当我点击广告时,它会像我们预期的那样将我带到全屏广告,但当我关闭该广告时,当前视图会冻结,因为视觉上没有任何结果。我知道应用程序仍在运行,因为当我再次点击横幅广告并再次关闭时,游戏恢复正常,游戏在视觉上冻结了。这是在我的视图控制器类(iAD委托)中初始化横幅的方式:

self.canDisplayBannerAds = YES;

CGRect bannerFrame = CGRectMake(0, 20, scene.size.width, 50);

banner = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
banner.delegate = self;
banner.frame = bannerFrame;
[banner setAlpha:0];
[self.view addSubview:banner];

这些是加载方法,也在视图控制器类中:

- (void) bannerViewDidLoadAd:(ADBannerView *) bannerM
{
    NSLog(@"Ad Loaded");
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [bannerM setAlpha:1];
    [UIView commitAnimations];
}

- (void) bannerView:(ADBannerView *)bannerM didFailToReceiveAdWithError:(NSError *)error
{
    NSLog(@"Ad Failed");
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [bannerM setAlpha:0];
    [UIView commitAnimations];
}

我真的不明白这个问题或者为什么会发生这种情况......任何帮助都会受到赞赏!

谢谢,
StrongJoshua

编辑以下是横幅广告打开和关闭时调用的两种方法:

- (BOOL) bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
    if(playing)
    {
        NSLog(@"Ad Pause");
        SKView *v = (SKView *)self.view;
        NSLog(@"2");
        SKScene *s = (SKScene *)v.scene;
        NSLog(@"3");
        WBPlayScene *p = (WBPlayScene *) s;
        NSLog(@"4");
        [p.logic pause:YES];
        NSLog(@"Done");
    }
    return YES;
}

- (void) bannerViewActionDidFinish:(ADBannerView *)banner
{
    if(playing)
    {
        NSLog(@"Ad Unpause");
        [((WBPlayScene *)((SKView *)self.view).scene).logic pause:NO];
    }
}

固定 所有这些NSLog的原因是因为当我试图暂停它时游戏崩溃了。达到“2”后游戏崩溃,所以在SKScene *s = (SKScene *)v.scene;。它给出了错误[UIView scene]: unrecognized selector sent to instance,我不明白为什么...... 解决方案:要解决此方面的问题,我将self.view更改为self.originalContentView,它获得了SKView,而不是广告横幅的视图。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

已解决:我必须删除通话以启用广告展示self.canDisplayBannerAds,因为它干扰了我自己制作的横幅。