iOS項(xiàng)目中廣告彈窗的實(shí)現(xiàn)

廣告彈窗一天顯示一次的邏輯:
  • 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;
}

最后:

接下來就可以愉快的顯示廣告彈窗了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,407評(píng)論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,036評(píng)論 25 709
  • 美得有點(diǎn)不真實(shí)的瀘沽湖,這樣的美景,誰都會(huì)一直牽掛,一直將記憶停留在哪里! 想要看到美景是要付出代價(jià)的,麗江出發(fā)去...
    云南旅游資訊閱讀 404評(píng)論 0 0
  • 《歡樂頌2》的結(jié)局是樊勝美提出分手,她決定一個(gè)人開始新的生活! 換做是我,也會(huì)做同樣的決定,...
    清瀾俠客閱讀 323評(píng)論 0 0

友情鏈接更多精彩內(nèi)容