GADRewardedInterstitialAd :如何每天只展示 3 个广告并为玩家只奖励 3 次?

时间:2021-02-10 13:25:20

标签: iphone xcode admob googlemobileads

这是我的 GADRewardedInterstitialAd 代码:

-(void)loadRewardedInterstitial
{
    [GADRewardedInterstitialAd
           loadWithAdUnitID:ADMOB_REWARDED_INTERSTITIAL
                    request:[GADRequest request]
          completionHandler:^(
              GADRewardedInterstitialAd *_Nullable rewardedInterstitialAd,
              NSError *_Nullable error) {
            if (!error) {
              self.rewardedInterstitialAd = rewardedInterstitialAd;
              self.rewardedInterstitialAd.fullScreenContentDelegate = self;
            }
          }];
}

-(void)playRewardedInterstitial
{
     [self.rewardedInterstitialAd presentFromRootViewController:self.viewController
                                userDidEarnRewardHandler:^{
                                    
                                    [self rewardInterstitialDoneRewardUser];
      
                                    [self loadRewardedInterstitial];
                                }];
    
}

如何每天只展示 3 个广告?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

-(void)playRewardedInterstitial
{
    if([self allowRewardedInterstitial])
    {
          [self.rewardedInterstitialAd presentFromRootViewController:self.viewController
                                userDidEarnRewardHandler:^{
                                    
                                    [self rewardInterstitialDoneRewardUser];
      
                                    [self loadRewardedInterstitial];
                                }];
    }
    else
    {
        UIAlertView* alert= [[UIAlertView alloc] initWithTitle:@"Today Already Watched!" message: @"Checkout tomorrow for Free Coins!"
                                                      delegate: NULL cancelButtonTitle: @"OK" otherButtonTitles: NULL];
        
        [alert show];
    }
}

-(bool)allowRewardedInterstitial
{
    bool allow_rewarded_ads = false;
        
    NSDate *currentDate = [NSDate date];
    
    //http://stackoverflow.com/questions/9769190/create-a-nsdate-from-a-string
    
    if([[NSUserDefaults standardUserDefaults] objectForKey:@"Rewarded_Date"] != nil)
    {
        NSDate *prefData = [[NSUserDefaults standardUserDefaults] objectForKey:@"Rewarded_Date"];
        
        NSDateComponents *components1 = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:prefData];
        
        NSDateComponents *components2 = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
        
        NSTimeInterval distanceBetweenDates = [currentDate timeIntervalSinceDate:prefData];
        double secondsInAnHour = 3600;
        NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
        
        //NSLog(@"hoursBetweenDates: %d", hoursBetweenDates);
        
        if( [components2 day] != [components1 day] )
        {
            allow_rewarded_ads = true;
            
            [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"Reward_Play_count"];

        }
        else
        {
            if([[NSUserDefaults standardUserDefaults] objectForKey:@"Reward_Play_count"])
            {
                int count = [[[NSUserDefaults standardUserDefaults] objectForKey:@"Reward_Play_count"] intValue];
                count++;

                [[NSUserDefaults standardUserDefaults] setInteger:count forKey:@"Reward_Play_count"];
                [[NSUserDefaults standardUserDefaults] synchronize];

                
                if(count <=3)
                    allow_rewarded_ads = true;
                else
                    allow_rewarded_ads = false;
            }
            else
            {
                [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"Reward_Play_count"];
                [[NSUserDefaults standardUserDefaults] synchronize];

                allow_rewarded_ads = true;
            }
        }
        
    }
    else
    {
        allow_rewarded_ads = true;

        [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"Reward_Play_count"];
    }
    
    if(allow_rewarded_ads)
    {
        [[NSUserDefaults standardUserDefaults] setObject:currentDate forKey:@"Rewarded_Date"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    
    return allow_rewarded_ads;
}