廣告彈窗一天顯示一次的邏輯:
1、發(fā)送獲取廣告的請(qǐng)求,接口請(qǐng)求失敗不顯示彈窗,請(qǐng)求成功則進(jìn)行第2步。
2、通過接口返回的廣告 id 與 之前存儲(chǔ)的廣告 id 對(duì)比:如果不一致,則顯示廣告,并存儲(chǔ)新的廣告 id 和新的日期 date;如果一致,則進(jìn)行第3步。
3、對(duì)比之前存儲(chǔ)的時(shí)間 date:如果時(shí)間 date 不一致,則顯示廣告,并存儲(chǔ)新的時(shí)間 date;如果一致,則不顯示廣告。
通過接口返回的廣告 id 來區(qū)分顯示的是不是新廣告
通過 date 來判斷當(dāng)天是否已經(jīng)顯示過廣告彈窗
代碼實(shí)現(xiàn):
1、獲取當(dāng)前時(shí)間:
- (NSString *)getNowDate {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
// 得到當(dāng)前時(shí)間(世界標(biāo)準(zhǔn)時(shí)間 UTC/GMT)
NSDate *nowDate = [NSDate date];
// 設(shè)置系統(tǒng)時(shí)區(qū)為本地時(shí)區(qū)
NSTimeZone *zone = [NSTimeZone systemTimeZone];
// 計(jì)算本地時(shí)區(qū)與 GMT 時(shí)區(qū)的時(shí)間差
NSInteger interval = [zone secondsFromGMT];
// 在 GMT 時(shí)間基礎(chǔ)上追加時(shí)間差值,得到本地時(shí)間
nowDate = [nowDate dateByAddingTimeInterval:interval];
NSString *nowDateString = [dateFormatter stringFromDate:nowDate];
// NSLog(@"現(xiàn)在時(shí)間: nowDate=%@, nowDateString=%@",nowDate,nowDateString);
// nowDateString : 2017-06-01
return nowDateString;
}
注意:
- 獲取到的當(dāng)前時(shí)間只顯示到天數(shù),如:2017-06-01
- 如果是間隔一個(gè)小時(shí)顯示一次廣告彈窗的話,可以通過設(shè)置時(shí)間到小時(shí),然后通過時(shí)間差來進(jìn)行判斷。
2、通過接口返回的廣告 id 判斷是否顯示廣告彈窗
- (BOOL)judgeIsShowAdViewWithNowId:(NSString *)nowId {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// 存儲(chǔ)的廣告id
NSString *adIdString = [userDefaults objectForKey:@"currentAdId"];
// 存儲(chǔ)的廣告時(shí)間
NSString *adDateString = [userDefaults objectForKey:@"currentAdTime"];
// 當(dāng)前時(shí)間
NSString *nowDate = [self getNowDate];
// 對(duì)比廣告id、時(shí)間
if ([adIdString isEqualToString:nowId] && [adDateString isEqualToString:nowDate]) {
return NO;
} else {
// 存儲(chǔ)新的id、日期
[userDefaults setValue:nowId forKey:@"currentAdId"];
[userDefaults setValue:nowDate forKey:@"currentAdTime"];
return YES;
}
return NO;
}
最后:
接下來就可以愉快的顯示廣告彈窗了。