Comment append iAd dans Cocos-SpriteBuilder

J'utilise SpriteBuilder (qui s'intègre avec Cocos2d v3.0). J'ai construit une application et maintenant je veux mettre dans un iAd au sumt qui apparaît quand je l'appelle, et se cache quand je le dis. Quelle est la manière la plus simple de faire ceci?

Gardez à l'esprit que j'utilise SpriteBuilder avec Cocos2d. Et ce n'est pas parce que j'utilise SpriteBuilder que je n'utilise pas Xcode 5 également. Je suis également pleinement impliqué dans Xcode. SpriteBuilder n'écrit pas le code pour moi, je le fais.

Ajoutez le framework iAd à vos dependencies.

Dans votre file d'en-tête pour votre scène de jeu, ajoutez ADBannerViewDelegate, par exemple:

@interface MainScene : CCNode <CCPhysicsCollisionDelegate, ADBannerViewDelegate> 

Dans votre file d'implémentation, ajoutez la variable d'instance _bannerView:

 @implementation MainScene { ADBannerView *_bannerView; } 

Et enfin, insérez le code iAD (avec quelques réglages cocos2d). Voici ma mise en œuvre pour un jeu en mode portrait avec une bannière supérieure. Il n'y a pas de méthode hide, mais c'est assez facile à implémenter.

 # 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]; }