Swift4.2——组件化:一行代码搞定APP启动广告页

介绍

App启动广告页,支持播放Gif/png/jpg等。(组件中已经监听了app的 UIApplicationDidFinishLaunching 通知,通知来了会把广告页添加到keyWindow中,使用者只需要创建即可。)源码

Swift 4.0~4.2
iOS 8.0~..
Xcode 9.0~10.0

版本迭代

- 2.1.0
  -  升级到Swift 4.2
- 2.0.2
    -  修复显示广告页之前,闪现首页界面的问题
- 2.0.1
    -  添加在广告页未加载完之前显示的占位图参数:placeholderImage,默认显示启动图

广告页显示思路

广告页的资源网络请求和显示都是在applection的didFinishLaunchingWithOptions方法中完成

在显示广告页之前会先显示启动图,防止闪屏的问题

    1. 发起网络请求加载广告页资源,并把资源保存到本地以备展示;
    1. 从本地获取广告页资源并展示。

这两有两个问题:

    1. 网络请求的方法和展示的方法是在didFinishLaunchingWithOptions方法中的,没有先后顺序;
    1. 最新的广告页资源请求结果并不会影响到本次的广告页展示,本次展示的是上一次请求的结果;

思考:为什么会有以上两个问题呢?!
因为我们的广告页是要在app的启动页完成之后展示,我们不可能等网络请求回调回来才去展示广告页,不然会影响用户的交互,所以网络请求和展示这是两个独立的部分。

广告页组件封装的思路

支持播放本地与网络Gif和图片资源。如果是网络资源先下载到本地,根据资源路径命名缓存。Gif的播放使用DispatchSource创建定时器+ ImageIO框架获取帧图片。

Gif演示:

播放Gif资源
播放图片资源

配置Podfile

pod 'AdvertisementView'

执行pod命令,导入组件

pod install

可配置接口介绍

1.实例化接口及可配置参数

/// App启动广告页
///
/// - Parameters:
///   - frame: 广告页大小,default: UIScreen.main.bounds
///   - duration: 广告页显示时间,default: 3秒
///   - delay: 广告页展示完成后的停留时间,default: 1.0秒
///   - adUrl: 广告资源路径(本地或网络链接,使用时只传入URL即可)
///   - isHiddenSkipBtn: 是否隐藏跳过按钮(true 隐藏; false 不隐藏),default: false
///   - isIgnoreCache: 是否忽略本地缓存(true 忽略; false 缓存),default: true
///   - placeholderImage: 在广告页未加载完之前显示的占位图,默认显示启动图
///   - completion: 用户点击广告事件的或公告展示完成的回调, isGotoDetailView 为ture表示点击了公告详情
convenience public init(frame: CGRect = default, duration: Int = default, delay: Double = default, adUrl: String, isHiddenSkipBtn: Bool = default, isIgnoreCache: Bool = default, placeholderImage: UIImage?, completion: @escaping (_ isGotoDetailView: Bool) -> ())

2.如果选择本地缓存网络资源,本地缓存清理接口

/// 删除本地缓存的广告资源
///
/// - Parameter url: 资源路径
/// - Returns: 返回ture表示删除成功,false删除失败
public class func clearAdDataFromLocal(_ url: String) -> Bool

/// 删除本地所有缓存
///
/// - Returns: 返回ture表示删除成功,false删除失败
public class func clealAllLocalCache() -> Bool

Example

// 网络资源
let adImageJPGUrl = "http://p5.image.hiapk.com/uploads/allimg/150112/7730-150112143S3.jpg"
let adimageGIFUrl = "http://img.ui.cn/data/file/3/4/6/210643.gif"
// 本地资源
let adImageJPGPath = Bundle.main.path(forResource: "adImage2", ofType: "jpg") ?? ""
let adImageGifPath = Bundle.main.path(forResource: "adImage3", ofType: "gif") ?? ""

let _ = AdvertisementView(adUrl: adImageGifPath, isIgnoreCache: false, placeholderImage: nil, completion: { (isGotoDetailView) in
  print(isGotoDetailView)
})

代码请移步github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,596评论 4 59
  • 第一次认识周杰伦是在表叔书桌里的抽屉里,那是2005年的冬天,那年我八岁,小学二年级还处于识字和勉强算一下百以内加...
    享阿为阅读 959评论 9 7
  • 由于公司业务需求,最近一段时间连续面试了几十位求职者。由于笔者在互联网行业工作,借助行业内的一些垂直招聘APP,也...
    张砷镓阅读 13,551评论 93 346
  • 四天三晚黔东南自驾之旅 *出行人数:3人<小粒、妖、方洲> 所有旅行图片均为手机摄影 : <vivo和iphone...
    悠然小妖阅读 903评论 28 15