Как добавить iAd в Cocos-SpriteBuilder

Я использую SpriteBuilder (который интегрируется с Cocos2d v3.0). Я создал приложение и теперь хочу разместить iAd в самом верху, который появляется, когда я его вызываю, и скрывается, когда я говорю. Какой самый простой способ сделать это?

Имейте в виду, что я использую SpriteBuilder с Cocos2d. И то, что я использую SpriteBuilder, не означает, что я также не использую Xcode 5. Я также полностью вовлечен в Xcode. SpriteBuilder не пишет за меня код, это делаю я.


person nodebase    schedule 14.02.2014    source источник


Ответы (1)


Добавьте фреймворк iAd в свои зависимости.

В заголовочный файл вашей игровой сцены добавьте ADBannerViewDelegate, например:

@interface MainScene : CCNode <CCPhysicsCollisionDelegate, ADBannerViewDelegate>

В файле реализации добавьте переменную экземпляра _bannerView:

@implementation MainScene {
    ADBannerView *_bannerView;
}    

И, наконец, вставьте код iAD (с некоторыми настройками cocos2d). Вот моя реализация игры в портретном режиме с верхним баннером. Метода скрытия нет, но его довольно легко реализовать.

# pragma mark - iAd code

-(id)init
{
    if( (self= [super init]) )
    {
        // On iOS 6 ADBannerView introduces a new initializer, use it when available.
        if ([ADBannerView instancesRespondToSelector:@selector(initWithAdType:)]) {
            _adView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];

        } else {
            _adView = [[ADBannerView alloc] init];
        }
        _adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
        _adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
        [[[CCDirector sharedDirector]view]addSubview:_adView];
        [_adView setBackgroundColor:[UIColor clearColor]];
        [[[CCDirector sharedDirector]view]addSubview:_adView];
        _adView.delegate = self;
    }
    [self layoutAnimated:YES];
    return self;
}


- (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;
    } 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 {
    [self layoutAnimated:YES];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    [self layoutAnimated:YES];
}
person Sven    schedule 15.02.2014
comment
Я благодарю Бога за таких людей, как вы в этом мире. Я весь день искал, как сделать именно это, и все, что я нашел, было сложным кодом. Тем не менее, когда я увидел это, я подумал, что это слишком просто. Спасибо большое. - person Crazycriss; 17.02.2014
comment
Спасибо :) Я превратил его во вспомогательную реализацию, чтобы упростить ее использование: github.com/svenanders/ iAdHelper - person Sven; 26.02.2014