无法让iAd横幅与cocos2d一起使用

时间:2014-07-24 16:29:51

标签: ios7 cocos2d-iphone iad

我可能是我,但我正在努力连续两天让iAd框架在我正在进行的项目中使用cocos2d。

我有搜索google,stackoverflow和cocos2d论坛但没有运气。 我已经从stackoverflow站点和其他资源下载并尝试了很多示例。 当我将代码与我当前的项目结合起来时,它无法正常工作。 不满意的结果差别很大,可能会让其他人感到困惑,这就是为什么我还没有用这个请求发布代码。无论如何,代码也可以在stackoverflow网站上找到,我已经包含了一些我尝试过的链接。 有一刻我非常接近解决方案,但特定的迁移搞砸了AppDelegate方法。 AppDelegate方法有2个@interface部分。我试图解决这个问题,但无法弄清楚如何解决它并重新开始从之前的备份中再次面对问题。

谁能帮助我,用一些示例代码将我推向正确的方向。

下面是我准备尝试的一些东西/链接:

http://www.highoncoding.com/Articles/751_Implementing_iAd_on_Cocos2d_Application.aspx    (太旧了)

How to add iad in cocos2d?

iOS 7 iAd cocos2d deprecated

iAd ADBannerView detect unloading

https://www.youtube.com/watch?v=fP2ijcXbCz4

提前致谢

下面的代码是最接近屏幕底部的蓝色横幅的东西。这不是我自己的,评论不是我的。

-(id) init
{
  if( (self=[super init])) {
    UIViewController *controller = [[UIViewController alloc] init];
    controller.view.frame = CGRectMake(0, size.height -32, 320, 32);

    ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectZero];

    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierLandscape];

    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
    [controller.view addSubview:adView];
    adView.delegate = self;

    [[[CCDirector sharedDirector] view] addSubview:controller.view];
    [[[CCDirector sharedDirector] view] setNeedsLayout];
  }
  [self layoutAnimated:YES];
}

- (void)layoutAnimated:(BOOL)animated
{
    // As of iOS 6.0, the banner will automatically resize itself based on its width.
    // To support iOS 5.0 however, we continue to set the currentContentSizeIdentifier appropriately.
    CGRect contentFrame = [CCDirector sharedDirector].view.bounds;
    if (contentFrame.size.width < contentFrame.size.height) {
        //_bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
        [adView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
        } else {
        _bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
    }

    CGRect bannerFrame = _bannerView.frame;
    if (_bannerView.bannerLoaded) {
        contentFrame.size.height -= _bannerView.frame.size.height;
        bannerFrame.origin.y = contentFrame.size.height;
    } else {
        bannerFrame.origin.y = contentFrame.size.height;
    }

    [UIView animateWithDuration:animated ? 0.25 : 0.0 animations:^{
         _bannerView.frame = bannerFrame;
    }];
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    if (!bannerIsVisible)
    {
        NSLog(@"bannerViewDidLoadAd");
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        banner.frame = CGRectOffset(banner.frame, 0, -32); //the offending line

        self.position = ccpAdd(ccp(0, 32), self.position);

        [UIView commitAnimations];
        bannerIsVisible = YES;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    if (bannerIsVisible)
    {
        NSLog(@"bannerView:didFailToReceiveAdWithError:");
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        banner.frame = CGRectOffset(banner.frame, 0, 32); //the other offending line
        self.position = ccpAdd(ccp(0, -32), self.position);

        [UIView commitAnimations];
        bannerIsVisible = NO;
    }
}

1 个答案:

答案 0 :(得分:0)

确实是我。 如果您使用的是cocos2d v2,ios7并且您想要实现iAds,请使用以下链接。 这将为您提供您想要的解决方案。 使用MyiAd类检查HelloWorldLayer.h和.m文件,这很容易(像往常一样)。

不要尝试别的,因为我已经为你做了。

https://github.com/gururajios/Cocos2d-iAd

希望此评论能帮助其他访问者找到比我更快的解决方案!

此致