登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

Swift4.2一行代码搞定APP启动广告页

[复制链接]
来自: BruceLong 分类: iOS精品源码 上传时间: 2018-8-8 11:43:16
Tag:

项目介绍:

介绍

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

github源码

博客

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

相关源码推荐:

我来说两句
*滑动验证:
所有评论(5)
逆鳞九霄 2018-8-9 10:20:47
正需要啊,感谢楼主无私分享!
回复
hellokenken 2018-8-9 10:20:59
mark,收藏了
回复
inta加加 2018-8-9 10:21:01
膜拜大神~
回复
bug是啥 2018-8-9 10:21:05
我是来学习的
回复
AlonMessi 2018-8-9 10:21:10
帮帮顶顶!!
回复
ou大神 2018-8-9 10:21:35
小弟学习了~支持,支持
回复
编程是什么 2018-8-9 10:21:43
感谢分享,code4app有你更精彩
回复
code4app热心网友 2018-8-9 14:17:13
我只是路过打酱油的。
回复
code4app热心网友 2018-8-9 14:17:57
正需要啊,感谢楼主无私分享!
回复
提取码:  下载次数:16 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
678 0 16
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表