iOS项目中广告弹窗的实现

广告弹窗一天显示一次的逻辑:
  • 1、发送获取广告的请求,接口请求失败不显示弹窗,请求成功则进行第2步。

  • 2、通过接口返回的广告 id 与 之前存储的广告 id 对比:如果不一致,则显示广告,并存储新的广告 id 和新的日期 date;如果一致,则进行第3步。

  • 3、对比之前存储的时间 date:如果时间 date 不一致,则显示广告,并存储新的时间 date;如果一致,则不显示广告。

通过接口返回的广告 id 来区分显示的是不是新广告

通过 date 来判断当天是否已经显示过广告弹窗

代码实现:

1、获取当前时间:
- (NSString *)getNowDate {
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    
    // 得到当前时间(世界标准时间 UTC/GMT)
    NSDate *nowDate = [NSDate date];
    // 设置系统时区为本地时区
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    // 计算本地时区与 GMT 时区的时间差
    NSInteger interval = [zone secondsFromGMT];
    // 在 GMT 时间基础上追加时间差值,得到本地时间
    nowDate = [nowDate dateByAddingTimeInterval:interval];
    
    NSString *nowDateString = [dateFormatter stringFromDate:nowDate];
    
    // NSLog(@"现在时间: nowDate=%@, nowDateString=%@",nowDate,nowDateString);
    
    // nowDateString : 2017-06-01
    
    return nowDateString;
}

注意:

  • 获取到的当前时间只显示到天数,如:2017-06-01
  • 如果是间隔一个小时显示一次广告弹窗的话,可以通过设置时间到小时,然后通过时间差来进行判断。
2、通过接口返回的广告 id 判断是否显示广告弹窗
- (BOOL)judgeIsShowAdViewWithNowId:(NSString *)nowId {
    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    
    // 存储的广告id
    NSString *adIdString = [userDefaults objectForKey:@"currentAdId"];
    // 存储的广告时间
    NSString *adDateString = [userDefaults objectForKey:@"currentAdTime"];
    
    // 当前时间
    NSString *nowDate = [self getNowDate];
    
    // 对比广告id、时间
    if ([adIdString isEqualToString:nowId] && [adDateString isEqualToString:nowDate]) {
        
        return NO;
        
    } else {
        
        // 存储新的id、日期
        
        [userDefaults setValue:nowId forKey:@"currentAdId"];
        
        [userDefaults setValue:nowDate forKey:@"currentAdTime"];
        
        return YES;
    }
    
    return NO;
}

最后:

接下来就可以愉快的显示广告弹窗了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容