AdMob Interstitial every fifth game

I implemented the AdMob Interstitial ad in my project and it works well. Now I want the AdMob ad to appear only for every fifth game, and not after every single game. Can anybody help me?

Here is my Admob code in my GameViewController:

- (void)viewDidLoad { [super viewDidLoad]; //addInterstitial self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-XXXXXXXXXX/XXXXXXXXXX"]; GADRequest *request = [GADRequest request]; request.testDevices = @[@"XXXXXXXXXXXXXXXXXXXXXXXXXX"]; [self.interstitial loadRequest:request]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil]; } - (void)handleNotification:(NSNotification *)notification { if ([notification.name isEqualToString:@"showAd"]) { if ([self.interstitial isReady]) { [self.interstitial presentFromRootViewController:self]; } 

UPDATE:

I have this code in GameViewController:

 - (void)viewDidLoad { [super viewDidLoad]; //addInterstitial if ([[NSUserDefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] == nil){ NSNumber *number = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: number forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; } if ([[[NSUserDefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue] >= 5){ [self callAd]; self.interstitial = [self createAndLoadInterstitial]; NSNumber *number = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: number forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (void)handleNotification:(NSNotification *)notification { if ([notification.name isEqualToString:@"showAd"]) { if ([self.interstitial isReady]) { [self.interstitial presentFromRootViewController:self]; } } } - (void) callAd{ [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil]; } - (GADInterstitial *)createAndLoadInterstitial { self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:MyAdUnitID2]; self.interstitial.delegate = self; GADRequest *request2 = [GADRequest request]; request2.testDevices = @[@"XXXXXXXXXXXXXXXXXXXXXX"]; [self.interstitial loadRequest:request2]; return self.interstitial; } - (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial { self.interstitial = [self createAndLoadInterstitial]; } 

And in GameScene.m this code:

  - (void)showGameOver{ //addInterstitial int score = [[[NSUserDefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue]+1; NSNumber *newNumber = [NSNumber numberWithInt:score]; [[NSUserDefaults standardUserDefaults] setObject:newNumber forKey:GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; [[NSNotificationCenter defaultCenter] postNotificationName:@"showAd" object:nil]; 
+4
source share
1 answer

Use NSUserDefaults:

 - (void) callAd { // Code to call your ad here } - (void) viewDidLoad { // If you haven't played yet, sets to 0 if ([[NSUserdefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] == nil){ NSNumber *num = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: num forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; } // If you have played if ([[[NSUserdefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue] >= 5){ [self callAd]; // ad is called NSNumber *num = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: num forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; // resets to zero } } 

And whenever the game ends:

 int score = [[[NSUserdefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue] + 1; NSNumber *newNumber = [NSNumber numberWithInt:score]; [[NSUserDefaults standardUserDefaults] setObject:newNumber forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; // Sets to new value 

The key can be anything. At the top of your .m file, put:

 #define GAME_AMOUNT_KEY @"Game Amount Key" 

UPDATE

Edit:

 - (void)handleNotification:(NSNotification *)notification { if ([notification.name isEqualToString:@"showAd"]) { if ([self.interstitial isReady]) { [self.interstitial presentFromRootViewController:self]; } 

To:

 - (void)handleNotification:(NSNotification *)notification { if ([notification.name isEqualToString:@"showAd"]) { if ([self.interstitial isReady]) { if ([[[NSUserDefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue] >= 5){ [self.interstitial presentFromRootViewController:self]; NSNumber *number = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: number forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; } } 

And change (in ViewDidLoad):

 if ([[[NSUserDefaults standardUserDefaults] objectForKey:GAME_AMOUNT_KEY] intValue] >= 5){ [self callAd]; self.interstitial = [self createAndLoadInterstitial]; NSNumber *number = [NSNumber numberWithInt:0]; [[NSUserDefaults standardUserDefaults] setObject: number forKey: GAME_AMOUNT_KEY]; [[NSUserDefaults standardUserDefaults] synchronize]; } 

For

  [self callAd]; self.interstitial = [self createAndLoadInterstitial]; 
+3
source

All Articles