iOS Dev

iOS项目中广告弹窗的实现

2017-06-01  本文已影响444人  伯牙呀
广告弹窗一天显示一次的逻辑:

通过接口返回的广告 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;
}

注意:

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;
}

最后:

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

上一篇下一篇

猜你喜欢

热点阅读