App廣告管理

需求

  • 首次啟動(dòng)廣告
  • 熱啟動(dòng)廣告(App進(jìn)入后臺(tái)后羊苟,再次進(jìn)入前臺(tái))
  • 熱啟動(dòng)時(shí)間間隔控制 (App在后臺(tái)的時(shí)間)
  • 每次運(yùn)行期間廣告顯示次數(shù)控制 (單次運(yùn)行期間允許顯示廣告次數(shù))
  • 每天總的廣告顯示次數(shù)控制 (每天允許顯示廣告次數(shù))
  • 區(qū)分熱啟動(dòng)與App在前臺(tái)解鎖手機(jī)

App在前臺(tái)塑陵,用戶鎖屏相當(dāng)于進(jìn)入后臺(tái),解鎖后App進(jìn)入前臺(tái)蜡励,都會(huì)執(zhí)行UIApplication對(duì)應(yīng)的代理方法令花。
一些App的非首次啟動(dòng)廣告,解鎖后App在前臺(tái)的情況下也會(huì)顯示凉倚,比如微博兼都。

一般廣告會(huì)有倒計(jì)時(shí)與跳過(guò)按鈕,這里只是一個(gè)簡(jiǎn)易的效果稽寒,只有一張圖片:


ADShow.gif

實(shí)現(xiàn)與代碼封裝

設(shè)計(jì)

廣告的管理控制屬于一個(gè)單獨(dú)的邏輯模塊扮碧,可以單獨(dú)封裝一個(gè)類,以單例的形式存在杏糙。
相比直接將代碼寫在AppDelegate的各個(gè)代理方法中慎王,這樣封裝可以更好的復(fù)用代碼,也能讓AppDelegate不至于太臃腫復(fù)雜宏侍。

解鎖判斷

對(duì)于解鎖狀態(tài)的判斷赖淤,已經(jīng)不能通過(guò)CFNotificationCentercom.apple.springboard.lockstate等通知進(jìn)行判斷了,否則可能在上傳App或者上架過(guò)程被拒谅河。
可以在應(yīng)用即將進(jìn)入前臺(tái)時(shí)漫蛔,可以結(jié)合UIApplicationState和屏幕亮度來(lái)判斷:

UIApplicationState state = [[UIApplication sharedApplication] applicationState];
CGFloat screenBrightness = [[UIScreen mainScreen] brightness];
BOOL isFromLockScreen = (state == UIApplicationStateInactive) || 
                        (state == UIApplicationStateBackground && screenBrightness <= 0.0);
統(tǒng)計(jì)控制

后臺(tái)時(shí)間和每次運(yùn)行顯示的廣告次數(shù)可以用變量統(tǒng)計(jì);每天的顯示次數(shù)則可以存入NSUserDefault旧蛾。

封裝

只將一些控制選項(xiàng)暴露給外部:

@class KMADManager;

typedef BOOL(^ShowADFilter)(KMADManager *manager, BOOL isFirstLaunch, BOOL reachTimeThreshold, BOOL reachMaxSessionTime, BOOL reachMaxDailyTime);

typedef void(^ShowADAction)(KMADManager *manager, BOOL isFirstLaunch);

@interface KMADManager : NSObject

/// should exclude app active from screen unlock or not, default YES
@property (nonatomic, assign) BOOL excludeFromScreenLock;

/// time interval in seconds between background and foreground, default to 300s(5 minus)
@property (nonatomic, assign) NSTimeInterval timeThreshold;

/// current session AD show times
@property (nonatomic, assign, readonly) NSUInteger sessionShowTimes;

/// current daily AD show times
@property (nonatomic, assign, readonly) NSUInteger dailyShowTimes;

/// max time of showing AD per session(APP run one time), default to NSUIntegerMax
@property (nonatomic, assign) NSUInteger maxSessionShowTimes;

/// max time of showing AD per day, default to NSUIntegerMax
@property (nonatomic, assign) NSUInteger maxDailyShowTimes;

/// if exists, will use the return value of this block to determine should show a AD or not.
@property (nonatomic, copy) ShowADFilter showADFilter;

/// execute this block when an AD should be shown
@property (nonatomic, copy) ShowADAction showADAction;

+ (KMADManager *)sharedInstace;

@end

這樣外部在調(diào)用時(shí),只需做簡(jiǎn)單的設(shè)置和顯示廣告即可:

KMADManager *mag = [KMADManager sharedInstace];
mag.maxDailyShowTimes = 5;
mag.maxSessionShowTimes = 3;
mag.excludeFromScreenLock = NO;
mag.timeThreshold = 3 * 60; // 3 minus
mag.showADAction = ^(KMADManager *manager, BOOL isFirstLaunch) {
    // here, code to show your AD
    // e.g.
    NSString *imageName = [NSString stringWithFormat:@"ad%@.jpg",@(manager.dailyShowTimes)];
    UIImage *image = [UIImage imageNamed:imageName];
    if (image) {
        [ADHelper showADWithImage:image];
    }
};
集成pod

上面的代碼已經(jīng)做成了pod

pod 'KMADManager', '~> 0.1.0'

如果還不知道怎么創(chuàng)建自己的pod蠕嫁,可以參考 CocoaPods創(chuàng)建自己的開源庫(kù)和私有庫(kù)

廣告顯示

可以單獨(dú)封裝一個(gè)類锨天,里面使用UIWindow或者UIView來(lái)顯示廣告。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剃毒,一起剝皮案震驚了整個(gè)濱河市病袄,隨后出現(xiàn)的幾起案子搂赋,更是在濱河造成了極大的恐慌,老刑警劉巖益缠,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脑奠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡幅慌,警方通過(guò)查閱死者的電腦和手機(jī)宋欺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胰伍,“玉大人齿诞,你說(shuō)我怎么就攤上這事÷钭猓” “怎么了祷杈?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渗饮。 經(jīng)常有香客問(wèn)我但汞,道長(zhǎng),這世上最難降的妖魔是什么互站? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任私蕾,我火速辦了婚禮,結(jié)果婚禮上云茸,老公的妹妹穿的比我還像新娘是目。我一直安慰自己,他們只是感情好标捺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布懊纳。 她就那樣靜靜地躺著,像睡著了一般亡容。 火紅的嫁衣襯著肌膚如雪嗤疯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天闺兢,我揣著相機(jī)與錄音茂缚,去河邊找鬼。 笑死屋谭,一個(gè)胖子當(dāng)著我的面吹牛脚囊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桐磁,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼悔耘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了我擂?” 一聲冷哼從身側(cè)響起衬以,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缓艳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后看峻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阶淘,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年互妓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溪窒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡车猬,死狀恐怖霉猛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情珠闰,我是刑警寧澤惜浅,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站伏嗜,受9級(jí)特大地震影響坛悉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜承绸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一裸影、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧军熏,春花似錦轩猩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至摩幔,卻和暖如春彤委,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背或衡。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工焦影, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人封断。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓斯辰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坡疼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子椒涯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,760評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件回梧、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 你的眼睛照亮了黑夜 也泄露了你的所在 死亡只是王冠上的一個(gè)代價(jià)
    萬(wàn)象峰年閱讀 167評(píng)論 0 1
  • 自從加入小灶群來(lái)废岂,已經(jīng)有半個(gè)月了,這是我第一次堅(jiān)持每日寫作超過(guò)10天以上狱意。好像湖苞,繼續(xù)堅(jiān)持下去也不是什么難事。 每日...
    Jiu_Chen閱讀 184評(píng)論 2 3
  • 墻外一陣微風(fēng)拂過(guò)详囤,依墻而生的向陽(yáng)花隨風(fēng)波動(dòng)财骨。它們?nèi)绱嗣煨。蝗侨俗⒛恐皇巧L(zhǎng)在墻外藏姐,但它卻是幸福的隆箩,因?yàn)樗鼈儫釔坳?yáng)...
    月明紅紅閱讀 186評(píng)論 0 0