1

でChartboostインタースティシャルと呼んでいapplicationDidBecomeActiveます。私のゲームは Game Center を使用しており、GC 承認ウィンドウがChartboostインタースティシャル ブロックChartboostウィンドウの下に表示されることがあります。唯一の解決策は、そこに切り替えてGameCenterログインすることです。どのような認証ウィンドウが表示されたかを確認することはできますか?

4

2 に答える 2

2

Game Center のログインが画面に表示されているときに広告をブロックすることは、オプションかもしれません! コードは iOS6 でのみ動作します。

@interface ChartboostBridge : NSObject<ChartboostDelegate>
@end

@implementation ChartboostBridge 

- (BOOL)shouldDisplayInterstitial:(NSString *)location{

    NSLog(@"CB shouldDisplayInterstitial for %@",location);

    if ([location isEqualToString:@"game_launch"]) {

        if( [[GameCenterIos shared ] hasLogInView] ){

            return NO;
        }

    }

    return YES;
}

@end


@implementation GameCenterIos

- (BOOL)hasLogInView{

    return  isViewOnScreen;
}

- (void)login
{
    GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];
    if (localPlayer.isAuthenticated) {
        isViewOnScreen=NO;
        return;
    }

    localPlayer.authenticateHandler =
        ^(UIViewController *viewController,
    NSError *error) {


        if (localPlayer.authenticated) {
            isAuthenticated = YES;
            isViewOnScreen=NO;
        } else if(viewController) {
            NSLog(@"Game Center shows login ....");
            isViewOnScreen=YES;
            [self presentViewController:viewController];
        } else {
            NSLog(@"Game Center error or canceled login ....");
            //User canceled Login view
            isAuthenticated = NO;
            isViewOnScreen=NO;
        }
    };
}

#pragma mark UIViewController stuff

-(UIViewController*) getRootViewController {
    return [UIApplication 
        sharedApplication].keyWindow.rootViewController;
}

-(void)presentViewController:(UIViewController*)vc {
    UIViewController* rootVC = [self getRootViewController];
    [rootVC presentViewController:vc animated:YES 
        completion:nil];
}

@end
于 2013-05-29T21:25:04.740 に答える