Добавление admob в приложение для iPhone с cocos2d приводит к падению игры ...? - PullRequest
0 голосов
/ 07 мая 2010

Я работаю над игрой cocos2d для iPhone. Игра отлично работает.
Теперь я хочу добавить рекламное объявление в меню моей игры. Я вижу рекламу, но через несколько секунд (или минут) игры происходит сбой игры (без сообщения об ошибке ...)
Вы видите, где проблема?

Menu.h

@interface Menu : CCColorLayer <AdMobDelegate> {  
    AdMobView *adMobAd;  
    NSTimer *refreshTimer;  
} 

Menu.m

+(id) scene {...}  
-(id) init {...}  
-(void) dealloc {...}

- (void)didReceiveAd:(AdMobView *)adView {  
    adMobAd.frame = CGRectMake(-260, 432, 320, 48);  
    CGAffineTransform makeLandscape = CGAffineTransformMakeRotation(M_PI * 0.5f);  
    makeLandscape = CGAffineTransformTranslate(makeLandscape, -216, -134);  
    adMobAd.transform = makeLandscape;  
    [[[CCDirector sharedDirector] openGLView] addSubview:adMobAd];  
    [refreshTimer invalidate];  
    refreshTimer = [NSTimer scheduledTimerWithTimeInterval:AD_REFRESH_PERIOD target:self selector:@selector(refreshAd:) userInfo:nil repeats:YES];  
}  

- (UIViewController *)currentViewController {
    return nil;
}

- (void)onEnter {
    adMobAd = [AdMobView requestAdWithDelegate:self];
    [adMobAd retain];
    [super onEnter];
}

- (void)onExit {
    [adMobAd removeFromSuperview];
    [adMobAd release];
    [super onExit];
}

- (void)refreshAd:(NSTimer *)timer {
    [adMobAd requestFreshAd];
}

- (NSString *)publisherId {
    return @"zzzzzzzzzzzzzz";
}

- (UIColor *)adBackgroundColor {
    return [UIColor colorWithRed:0.2 green:0.6 blue:1 alpha:1];
}

- (UIColor *)primaryTextColor {
    return [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
}

- (UIColor *)secondaryTextColor {
    return [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
}

- (BOOL)mayAskForLocation {
    return NO;
}

Спасибо! : -)

1 Ответ

1 голос
/ 08 мая 2010

Я бы посоветовал вам избавиться от NSTimer и использовать вместо него CCTimer (и запланировать его с помощью CCScheduler).

Вы можете сделать это с помощью этого кода:

    refreshTimer = [CCTimer timerWithTarget:self
                                   selector:@selector(refreshAd:)
                                   interval:AD_REFRESH_PERIOD];
    [[CCScheduler sharedScheduler] scheduleTimer:refreshTimer];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...