美文网首页iOS Dev
iOS项目中广告弹窗的实现

iOS项目中广告弹窗的实现

作者: 伯牙呀 | 来源:发表于2017-06-01 19:45 被阅读444次
    广告弹窗一天显示一次的逻辑:
    • 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;
    }
    

    最后:

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

    相关文章

      网友评论

        本文标题:iOS项目中广告弹窗的实现

        本文链接:https://www.haomeiwen.com/subject/jowefxtx.html