{"id":15026121,"url":"https://github.com/coderzhuxh/xhlaunchad","last_synced_at":"2025-05-14T15:10:54.335Z","repository":{"id":38714772,"uuid":"61020125","full_name":"CoderZhuXH/XHLaunchAd","owner":"CoderZhuXH","description":"🔥The screen opening advertising solutions - 开屏广告、启动广告解决方案-支持静态/动态图片广告,mp4视频广告,全屏/半屏广告、兼容iPhone/iPad. 【 Github下载不了/下载慢 可以访问国内下载地址: https://gitee.com/CoderZhuXH/XHLaunchAd】","archived":false,"fork":false,"pushed_at":"2022-10-11T18:34:56.000Z","size":39595,"stargazers_count":3694,"open_issues_count":178,"forks_count":741,"subscribers_count":80,"default_branch":"master","last_synced_at":"2025-04-10T11:23:58.182Z","etag":null,"topics":["apple","ios","ipad","iphone","objective-c","pod","podfile"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoderZhuXH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-13T08:25:17.000Z","updated_at":"2025-03-27T03:21:22.000Z","dependencies_parsed_at":"2022-07-17T09:46:16.670Z","dependency_job_id":null,"html_url":"https://github.com/CoderZhuXH/XHLaunchAd","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderZhuXH%2FXHLaunchAd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderZhuXH%2FXHLaunchAd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderZhuXH%2FXHLaunchAd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderZhuXH%2FXHLaunchAd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoderZhuXH","download_url":"https://codeload.github.com/CoderZhuXH/XHLaunchAd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248384742,"owners_count":21094768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple","ios","ipad","iphone","objective-c","pod","podfile"],"created_at":"2024-09-24T20:03:50.411Z","updated_at":"2025-04-11T11:36:55.593Z","avatar_url":"https://github.com/CoderZhuXH.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](Logo/header.png)\n\n### Github下载不了/下载慢 可以访问国内下载地址: [https://gitee.com/CoderZhuXH/XHLaunchAd](https://gitee.com/CoderZhuXH/XHLaunchAd)\n\n### 开屏广告、启动广告解决方案-支持静态/动态图片广告/mp4视频广告\n\n[![AppVeyor](https://img.shields.io/appveyor/ci/gruntjs/grunt.svg?maxAge=2592000)](https://github.com/CoderZhuXH/XHLaunchAd)\n[![Version Status](https://img.shields.io/cocoapods/v/XHLaunchAd.svg?style=flat)](http://cocoadocs.org/docsets/XHLaunchAd)\n[![Support](https://img.shields.io/badge/support-iOS8%2B-brightgreen.svg)](https://github.com/CoderZhuXH/XHLaunchAd)\n[![Pod Platform](https://img.shields.io/cocoapods/p/XHLaunchAd.svg?style=flat)](http://cocoadocs.org/docsets/XHLaunchAd/)\n[![Pod License](https://img.shields.io/cocoapods/l/XHLaunchAd.svg?style=flat)](https://github.com/CoderZhuXH/XHLaunchAd/blob/master/LICENSE)\n\n### 特性:\n\n* 1.支持静态/动态图片广告.\n* 2.支持mp4视频广告.\n* 3.支持全屏/半屏广告.\n* 4.支持网络及本地资源.\n* 5.兼容iPhone和iPad.\n* 6.支持广告点击事件.\n* 7.支持自定义跳过按钮,添加子视图.\n* 8.支持设置数据等待时间.\n* 9.自带图片/视频下载,缓存功能.\n* 10.支持预缓存图片及视频.\n* 11.支持设置完成动画.\n* 12.支持清除指定资源缓存.\n* 13.支持LaunchImage 和 LaunchScreen.storyboard.\n* 14.等等等...\n\n### 技术交流群(群号:537476189)\n![](Logo/qqgroup.png)\n\n\n###  常见问题\n####    1.为什么设置了本地图片广告,却提示找不到图片资源?\n*   请将本地广告图片,直接放在工程目录,不要放在Assets里面,XHLaunchAd不是通过imageName:读取图片,而是是通过[NSBundle mainBundle] path....的方式读取本地图片的(此处涉及到内存优化)\n\n####    2.为什么我启动的时候会先进入根控制器后,再显示广告页面?\n*   请确认下,你在请求广告数据之前,是否有调用`[XHLaunchAd setWaitDataDuration:2];`方法设置数据等待时间\n\n####    3.为什么有时候启动广告倒计时出现跳秒现象或者出现卡顿现象?\n*   此问题是你APP启动时主线程阻塞造成的.\n*   XHLaunchAd采用GCD定时器,倒计时不受主线程阻塞影响,但更新秒数/UI是在主线程中进行的.主线程阻塞影响UI更新.\n*   请检查你程序启动时,有没有掉用同步方法或同步请求,(例如:环信SDK同步登录等).\n*   建议打开手机-设置-开发者-弱网环境 进行调试比较容易找到阻塞原因.\n\n####    4.为什么设置了缓存策略,关闭网络后,开屏广告却不显示?\n*   XHLaunchAd 图片广告设置configuration.imageOption为XHLaunchAdImageDefault 或者XHLaunchAdImageRefreshCached 或者XHLaunchAdImageCacheInBackground后,都会缓存广告image,视频广告会默认缓存视频文件,断网后广告数据请求会失败,你需要在广告数据请求失败的回调里初始化XHLaunchAd,没有初始化XHLaunchAd,开屏广告是不会显示的.\n[XHLaunchAd cacheImageURLString]和 [XHLaunchAd cacheVideoURLString]可以获取上一次广告显示时的ImageURLString和videoUrlString.\n\n####    5.如何用一张广告图,适配所有机型?\n*   图片广告:设置imageAdconfiguration.contentMode = UIViewContentModeScaleAspectFill; 视频广告:设置videoAdconfiguration.videoGravity = AVLayerVideoGravityResizeAspectFill;.\n*   广告图片/视频内容到四周保留适当安全距离,多余的会裁剪掉,例如:用8P尺寸1242*2208的广告图,在iphonex,iphonexr,iphonexs,iphonexs max上显示时,左右两侧会多出一部分,多出的的部分会裁剪掉,这一区域不要放广告内容.\n\n\n### 更新记录:  \n\n*   2020.01.09 -- v3.9.10 --\u003e1.广告点击事件代理支持返回bool值决定是否移除广告(- (BOOL)xhLaunchAd:(XHLaunchAd *)launchAd clickAtOpenModel:(id)openModel clickPoint:(CGPoint)clickPoint) 2.LaunchScreen.storyboard safeAreaInsets问题修复 3.其他bug fix\n*   2018.01.31 -- v3.9.6 --\u003e1.添加视频广告静音属性(muted),2.显示视频广告时暂停其它APP音频播放显示完恢复,3.增加视频播放失败通知\n*   2018.01.11 -- v3.9.5 --\u003e1.修复videoGravity修饰符错误bug...\n*   2017.12.29 -- v3.9.4 --\u003e1.替换视频播放控制器为AVPlayerViewController 2.解决/优化在线程阻塞的情况下视频播放加载慢的问题 3.注意:此次更新后XHLaunchAd支持iOS8及以上版本,不在支持iOS7...\n*   2017.11.22 -- v3.9.0 --\u003e1.新增部分代理方法,部分旧的代理方法做过期处理,2.几处优化...\n*   2017.11.14 -- v3.8.4 --\u003e1.版本优化,2.bug fix...\n*   2017.10.18 -- v3.8.0 --\u003e1.增加对LaunchScreen.storyboard支持,2.修复pod导入编译报错问题...\n*   2017.10.11 -- v3.7.1 --\u003e1.批量缓存接口增加结果回调...\n*   2017.10.09 -- v3.7.0 --\u003e1.增加几种清除缓存的接口,2.增加几种倒计时按钮类型,3.已知问题优化与修复...\n*   2017.09.29 -- v3.6.1 --\u003e1.增加清除指定图片/视频缓存接口,2.优化在iPhoneX上显示效果,3.已知问题优化与修复...\n*   2017.09.18 -- v3.6.0 --\u003e1.优化图片解码方案,2.支持设置GIF动图是否循环播放...\n*   2017.09.13 -- v3.5.8 --\u003e增加几种显示完成的动画...\n*   2017.08.20 -- v3.5.6 --\u003e已知问题修复及内存优化...\n*   2017.05.26 -- v3.5.4 --\u003e修复横屏启动造成的界面问题...\n*   2017.05.02 -- v3.5.0 --\u003eGif动图占用内存优化...\n*   2017.04.26 -- v3.4.6 --\u003e版本优化,bug fix...\n*   2017.02.17 -- v3.4.0 --\u003e修复部分出现Crash Bug...\n*\t2016.12.14 -- v3.2.0 --\u003e添加subViews属性2.添加缓存检测...\n*\t2016.12.03 -- v3.0.0 --\u003e1.增加mp4视频开屏广告2.增加对本地资源支持3.增加预缓存接口4.增加更多属性及接口,具有更强的自定义性5.可设置显示完成动画类型6.可自定义跳过按钮7.拥有更优雅的接入接口8.优化缓存机制,bug fix等等...\n*\t2016.11.05 -- v2.2.0 --\u003e增加一种缓存方案:先缓存,下次显示.\u003cbr\u003e\n*\t2016.09.13 -- v2.1.8 --\u003e修复在Swift中使用异常.\u003cbr\u003e\n*\t2016.09.10 -- v2.1.7 --\u003e适配iPad,增加应用内跳转到广告详情,优化.\u003cbr\u003e\n*\t2016.09.07 -- v2.1.5 --\u003e修复跳过按钮类型设为None无效问题.\u003cbr\u003e\n*\t2016.09.01 -- v2.1.4 --\u003e广告url传nil或不合法时,按无数据处理.\u003cbr\u003e\n*\t2016.08.22 -- v2.1.2 --\u003e增加未检测到广告数据,设置启动页停留时间属性.\u003cbr\u003e\n*\t2016.08.19 -- v2.1.1 --\u003e跳过按钮bug修复.\u003cbr\u003e\n*\t2016.08.18 -- v2.1.0 --\u003eAPI微调,增加设置跳过按钮类型选项.\u003cbr\u003e\n*\t2016.08.16 -- v2.0 --\u003e1.修复显示广告前RootViewController闪现bug; 2.API重构,增强实用性.\u003cbr\u003e\n*\t2016.07.18 -- v1.2 --\u003e增加对GIF动态广告的支持.\u003cbr\u003e\n*\t2016.07.02 -- v1.1.2 --\u003e增加设置缓存机制选项.\u003cbr\u003e\n*\t2016.06.17 -- v1.1 --\u003e增加倒计时/跳过按钮.\u003cbr\u003e\n*\t2016.06.13 -- v1.0\n\n## 效果\n\n### 静态/动态广告-图片/视频广告\n\n![](/ScreenShot/ScreenShot00.gif) ![](/ScreenShot/ScreenShot01.gif) ![](/ScreenShot/ScreenShot02.gif)\n![](/ScreenShot/ScreenShot04.gif) ![](/ScreenShot/ScreenShot05.gif)  ![](/ScreenShot/ScreenShot06.gif)\n\n## 使用方法\n\n### 1.在didFinishLaunchingWithOptions中或UIApplicationDidFinishLaunching时初始化开屏广告\n\n### -1.1 添加图片开屏广告-使用本地数据\n#### -1.1.1 使用默认配置快速初始化\n```objc\n//1.使用默认配置初始化\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n    //配置广告数据\n    XHLaunchImageAdConfiguration *imageAdconfiguration = [XHLaunchImageAdConfiguration defaultConfiguration];\n    //广告图片URLString/或本地图片名(.jpg/.gif请带上后缀)\n    imageAdconfiguration.imageNameOrURLString = @\"image0.jpg\";\n     //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n    imageAdconfiguration.openModel = @\"http://www.it7090.com\";\n    //显示图片开屏广告\n    [XHLaunchAd imageAdWithImageAdConfiguration:imageAdconfiguration delegate:self];\n```\n#### -1.1.2自定义配置初始化\n\n```objc\n//2.自定义配置初始化\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n    //配置广告数据\n    XHLaunchImageAdConfiguration *imageAdconfiguration = [XHLaunchImageAdConfiguration new];\n    //广告停留时间\n    imageAdconfiguration.duration = 5;\n    //广告frame\n    imageAdconfiguration.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-150);\n    //广告图片URLString/或本地图片名(.jpg/.gif请带上后缀)\n    imageAdconfiguration.imageNameOrURLString = @\"image0.jpg\";\n    //设置GIF动图是否只循环播放一次(仅对动图设置有效)\n    imageAdconfiguration.GIFImageCycleOnce = NO;\n    //网络图片缓存机制(只对网络图片有效)\n    imageAdconfiguration.imageOption = XHLaunchAdImageRefreshCached;\n    //图片填充模式\n    imageAdconfiguration.contentMode = UIViewContentModeScaleToFill;\n     //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n    imageAdconfiguration.openModel = @\"http://www.it7090.com\";\n    //广告显示完成动画\n    imageAdconfiguration.showFinishAnimate =ShowFinishAnimateFadein;\n    //广告显示完成动画时间\n    imageAdconfiguration.showFinishAnimateTime = 0.8;\n    //跳过按钮类型\n    imageAdconfiguration.skipButtonType = SkipTypeTimeText;\n    //后台返回时,是否显示广告\n    imageAdconfiguration.showEnterForeground = NO;\n    \n     //设置要添加的子视图(可选)\n    //imageAdconfiguration.subViews = ...\n\n    //显示图片开屏广告\n    [XHLaunchAd imageAdWithImageAdConfiguration:imageAdconfiguration delegate:self]; \n    \n```\n### -1.2 添加图片开屏广告-使用网络数据\n#### -1.2.1 使用默认配置快速初始化\n\n```objc\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n\t//1.因为数据请求是异步的,请在数据请求前,调用下面方法配置数据等待时间.\n    //2.设为2即表示:启动页将停留2s等待服务器返回广告数据,2s内等到广告数据,将正常显示广告,否则将不显示\n    //3.数据获取成功,配置广告数据后,自动结束等待,显示广告\n    //注意:请求广告数据前,必须设置此属性,否则会先进入window的的根控制器\n    [XHLaunchAd setWaitDataDuration:2];\n    \n    //广告数据请求\n    [Network getLaunchAdImageDataSuccess:^(NSDictionary * response) {\n        \n        NSLog(@\"广告数据 = %@\",response);\n        \n        //广告数据转模型\n        LaunchAdModel *model = [[LaunchAdModel alloc] initWithDict:response[@\"data\"]];\n        //配置广告数据\n        XHLaunchImageAdConfiguration *imageAdconfiguration = [XHLaunchImageAdConfiguration defaultConfiguration];\n        //广告图片URLString/或本地图片名(.jpg/.gif请带上后缀)\n        imageAdconfiguration.imageNameOrURLString = model.content;\n         //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n        imageAdconfiguration.openModel = model.openUrl;\n        //显示开屏广告\n        [XHLaunchAd imageAdWithImageAdConfiguration:imageAdconfiguration delegate:self];\n        \n    } failure:^(NSError *error) {\n    }];\n\n\n```\n#### -1.2.2 自定义配置初始化\n\n```objc\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n \t//1.因为数据请求是异步的,请在数据请求前,调用下面方法配置数据等待时间.\n    //2.设为2即表示:启动页将停留2s等待服务器返回广告数据,2s内等到广告数据,将正常显示广告,否则将不显示\n    //3.数据获取成功,配置广告数据后,自动结束等待,显示广告\n    //注意:请求广告数据前,必须设置此属性,否则会先进入window的的根控制器\n    [XHLaunchAd setWaitDataDuration:2];\n    \n    //广告数据请求\n    [Network getLaunchAdImageDataSuccess:^(NSDictionary * response) {\n        \n        NSLog(@\"广告数据 = %@\",response);\n        \n        //广告数据转模型\n        LaunchAdModel *model = [[LaunchAdModel alloc] initWithDict:response[@\"data\"]];\n        //配置广告数据\n        XHLaunchImageAdConfiguration *imageAdconfiguration = [XHLaunchImageAdConfiguration new];\n        //广告停留时间\n        imageAdconfiguration.duration = model.duration;\n        //广告frame\n        imageAdconfiguration.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width/model.width*model.height);\n        //广告图片URLString/或本地图片名(.jpg/.gif请带上后缀)\n        imageAdconfiguration.imageNameOrURLString = model.content;\n        //设置GIF动图是否只循环播放一次(仅对动图设置有效)\n        imageAdconfiguration.GIFImageCycleOnce = NO;\n        //缓存机制(仅对网络图片有效)\n        //为告展示效果更好,可设置为XHLaunchAdImageCacheInBackground,先缓存,下次显示\n        imageAdconfiguration.imageOption = XHLaunchAdImageDefault;\n        //图片填充模式\n        imageAdconfiguration.contentMode = UIViewContentModeScaleToFill;\n         //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n        imageAdconfiguration.openModel = model.openUrl;\n        //广告显示完成动画\n        imageAdconfiguration.showFinishAnimate =ShowFinishAnimateLite;\n        //广告显示完成动画时间\n        imageAdconfiguration.showFinishAnimateTime = 0.8;\n        //跳过按钮类型\n        imageAdconfiguration.skipButtonType = SkipTypeTimeText;\n        //后台返回时,是否显示广告\n        imageAdconfiguration.showEnterForeground = NO;\n\n         //设置要添加的自定义视图(可选)\n         //imageAdconfiguration.subViews = ...\n \n        //显示开屏广告\n        [XHLaunchAd imageAdWithImageAdConfiguration:imageAdconfiguration delegate:self];\n        \n    } failure:^(NSError *error) {\n    }];\n\n```\n\n### -1.3添加视频开屏广告-使用本地数据\n#### -1.3.1 使用默认配置快速初始化\n\n```objc\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n    //1.使用默认配置初始化\n    XHLaunchVideoAdConfiguration *videoAdconfiguration = [XHLaunchVideoAdConfiguration defaultConfiguration];\n    //广告视频URLString/或本地视频名(请带上后缀)\n    videoAdconfiguration.videoNameOrURLString = @\"video0.mp4\";\n     //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n    videoAdconfiguration.openModel = @\"http://www.it7090.com\";\n    //显示视频开屏广告\n    [XHLaunchAd videoAdWithVideoAdConfiguration:videoAdconfiguration delegate:self];\n```\n\n#### -1.3.2 自定义配置初始化\n\n```objc   \n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n\t//2.自定义配置\n    XHLaunchVideoAdConfiguration *videoAdconfiguration = [XHLaunchVideoAdConfiguration new];\n    //广告停留时间\n    videoAdconfiguration.duration = 5;\n    //广告frame\n    videoAdconfiguration.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);\n    //广告视频URLString/或本地视频名(请带上后缀)\n    videoAdconfiguration.videoNameOrURLString = @\"video1.mp4\";\n    //是否关闭音频\n    videoAdconfiguration.muted = NO;\n    //视频填充模式\n    videoAdconfiguration.videoGravity = AVLayerVideoGravityResizeAspectFill;\n    //是否只循环播放一次\n    videoAdconfiguration.videoCycleOnce = NO;\n     //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n    videoAdconfiguration.openModel =  @\"http://www.it7090.com\";\n    //广告显示完成动画\n    videoAdconfiguration.showFinishAnimate =ShowFinishAnimateFadein;\n    //广告显示完成动画时间\n    videoAdconfiguration.showFinishAnimateTime = 0.8;\n    //跳过按钮类型\n    videoAdconfiguration.skipButtonType = SkipTypeTimeText;\n    //后台返回时,是否显示广告\n    videoAdconfiguration.showEnterForeground = NO;\n    \n    //设置要添加的子视图(可选)\n    //videoAdconfiguration.subViews = ...\n    \n    //显示视频开屏广告\n    [XHLaunchAd videoAdWithVideoAdConfiguration:videoAdconfiguration delegate:self];\n    \n```\n### -1.4添加视频开屏广告-使用网络数据\n#### -1.4.1 使用默认配置快速初始化\n\n```objc\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n    //1.因为数据请求是异步的,请在数据请求前,调用下面方法配置数据等待时间.\n    //2.设为2即表示:启动页将停留2s等待服务器返回广告数据,2s内等到广告数据,将正常显示广告,否则将不显示\n    //3.数据获取成功,配置广告数据后,自动结束等待,显示广告\n    //注意:请求广告数据前,必须设置此属性,否则会先进入window的的根控制器\n    [XHLaunchAd setWaitDataDuration:2];\n    \n    //广告数据请求\n    [Network getLaunchAdVideoDataSuccess:^(NSDictionary * response) {\n        \n        NSLog(@\"广告数据 = %@\",response);\n        \n        //广告数据转模型\n        LaunchAdModel *model = [[LaunchAdModel alloc] initWithDict:response[@\"data\"]];\n        \n        //配置广告数据\n        XHLaunchVideoAdConfiguration *videoAdconfiguration = [XHLaunchVideoAdConfiguration defaultConfiguration];\n        //注意:视频广告只支持先缓存,下次显示(看效果请二次运行)\n        videoAdconfiguration.videoNameOrURLString = model.content;\n         //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n        videoAdconfiguration.openModel = model.openUrl;\n        [XHLaunchAd videoAdWithVideoAdConfiguration:videoAdconfiguration delegate:self];\n        \n    } failure:^(NSError *error) {\n    }];\n\n\n```\n#### -1.4.2 自定义配置初始化\n\n```objc\n\n    //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)\n    [XHLaunchAd setLaunchSourceType:SourceTypeLaunchImage];\n\n \t//1.因为数据请求是异步的,请在数据请求前,调用下面方法配置数据等待时间.\n    //2.设为2即表示:启动页将停留2s等待服务器返回广告数据,2s内等到广告数据,将正常显示广告,否则将不显示\n    //3.数据获取成功,配置广告数据后,自动结束等待,显示广告\n    //注意:请求广告数据前,必须设置此属性,否则会先进入window的的根控制器\n    [XHLaunchAd setWaitDataDuration:2];\n    \n    //广告数据请求\n    [Network getLaunchAdVideoDataSuccess:^(NSDictionary * response) {\n        \n        NSLog(@\"广告数据 = %@\",response);\n        \n        //广告数据转模型\n        LaunchAdModel *model = [[LaunchAdModel alloc] initWithDict:response[@\"data\"]];\n        \n        //配置广告数据\n        XHLaunchVideoAdConfiguration *videoAdconfiguration = [XHLaunchVideoAdConfiguration new];\n        //广告停留时间\n        videoAdconfiguration.duration = model.duration;\n        //广告frame\n        videoAdconfiguration.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width/model.width*model.height);\n        //广告视频URLString/或本地视频名(请带上后缀)\n        //注意:视频广告只支持先缓存,下次显示(看效果请二次运行)\n        videoAdconfiguration.videoNameOrURLString = model.content;\n        //是否关闭音频\n        videoAdconfiguration.muted = NO;\n        //视频填充模式\n        videoAdconfiguration.videoGravity = AVLayerVideoGravityResizeAspectFill;\n        //是否只循环播放一次\n        videoAdconfiguration.videoCycleOnce = NO;\n         //广告点击打开页面参数(openModel可为NSString,模型,字典等任意类型)\n        videoAdconfiguration.openModel = model.openUrl;\n        //广告显示完成动画\n        videoAdconfiguration.showFinishAnimate =ShowFinishAnimateFadein;\n        //广告显示完成动画时间\n        videoAdconfiguration.showFinishAnimateTime = 0.8;\n        //后台返回时,是否显示广告\n        videoAdconfiguration.showEnterForeground = NO;\n        //跳过按钮类型\n        videoAdconfiguration.skipButtonType = SkipTypeTimeText;\n\n        //设置要添加的自定义视图(可选)\n        //videoAdconfiguration.subViews = ...\n\n        [XHLaunchAd videoAdWithVideoAdConfiguration:videoAdconfiguration delegate:self];\n        \n    } failure:^(NSError *error) {\n    }];\n\n\n```\n\n#### -1.5.0 显示完成动画支持以下效果\n\n```objc\n\n/** 显示完成动画类型 */\ntypedef NS_ENUM(NSInteger , ShowFinishAnimate) {\n    /** 无动画 */\n    ShowFinishAnimateNone = 1,\n    /** 普通淡入(default) */\n    ShowFinishAnimateFadein = 2,\n    /** 放大淡入 */\n    ShowFinishAnimateLite = 3,\n    /** 左右翻转(类似网易云音乐) */\n    ShowFinishAnimateFlipFromLeft = 4,\n    /** 下上翻转 */\n    ShowFinishAnimateFlipFromBottom = 5,\n    /** 向上翻页 */\n    ShowFinishAnimateCurlUp = 6,\n};\n\n```\n\n#### -1.6.0 跳过按钮支持以下类型\n\n```objc\n\n/** 跳过按钮类型 */\ntypedef NS_ENUM(NSInteger,SkipType) {\n    SkipTypeNone      = 1,//无\n    /** 方形 */\n    SkipTypeTime      = 2,//方形:倒计时\n    SkipTypeText      = 3,//方形:跳过\n    SkipTypeTimeText  = 4,//方形:倒计时+跳过 (default)\n    /** 圆形 */\n    SkipTypeRoundTime = 5,//圆形:倒计时\n    SkipTypeRoundText = 6,//圆形:跳过\n    SkipTypeRoundProgressTime = 7,//圆形:进度圈+倒计时\n    SkipTypeRoundProgressText = 8,//圆形:进度圈+跳过\n};\n\n```\n\n\n### 2.点击事件\n```objc\n/**\n 广告点击事件回调(return YES移除广告,NO不移除广告)\n */\n-(BOOL)xhLaunchAd:(XHLaunchAd *)launchAd clickAtOpenModel:(id)openModel clickPoint:(CGPoint)clickPoint{\n    \n    NSLog(@\"广告点击事件\");\n    \n    //openModel即配置广告数据设置的点击广告时打开页面参数(configuration.openModel)\n    \n    if(openModel == nil) return NO;\n    \n    WebViewController *VC = [[WebViewController alloc] init];\n    NSString *urlString = (NSString *)openModel;\n    VC.URLString = urlString;\n    //此处不要直接取keyWindow\n    UIViewController* rootVC = [[UIApplication sharedApplication].delegate window].rootViewController;\n    [rootVC.myNavigationController pushViewController:VC animated:YES];\n    \n    return YES;//YES移除广告,NO不移除广告\n}\n\n\n```\n### 3.自定义跳过按钮\n```objc\n//1.XHLaunchImageAdConfiguration 和XHLaunchVideoAdConfiguration 均有一个configuration.customSkipView 属性\n//2.自定义一个skipView 赋值给configuration.customSkipView属性 便可替换默认跳过按钮 如下:\nconfiguration.customSkipView = [self customSkipView];\n\n-(UIView *)customSkipView\n{\n    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];\n    button.backgroundColor =[UIColor orangeColor];\n    button.layer.cornerRadius = 5.0;\n    button.layer.borderWidth = 1.5;\n    button.layer.borderColor = [UIColor lightGrayColor].CGColor;\n    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];\n    button.titleLabel.font = [UIFont systemFontOfSize:14];\n    CGFloat y = XH_IPHONEX ? 54 : 30;\n    button.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-100,y, 85, 30);\n    [button addTarget:self action:@selector(skipAction) forControlEvents:UIControlEventTouchUpInside];\n    return button;\n}\n\n-(void)skipAction\n{\n     //移除广告\n    [XHLaunchAd removeAndAnimated:YES];\n}\n\n/**\n *  代理方法 - 倒计时回调\n *\n *  @param launchAd XHLaunchAd\n *  @param duration 倒计时时间\n */\n-(void)xhLaunchAd:(XHLaunchAd *)launchAd customSkipView:(UIView *)customSkipView duration:(NSInteger)duration\n{\n    UIButton *button = (UIButton *)customSkipView;//此处转换为你之前的类型\n    //设置自定义跳过按钮倒计时\n    [button setTitle:[NSString stringWithFormat:@\"自定义%lds\",duration] forState:UIControlStateNormal];\n}\n```\n\n### 4.批量下载缓存接口(如果你需要提前批量下载并缓存广告图片或视频请调用下面方法)\n```objc\n\n/**\n *  批量下载并缓存image(异步) - 已缓存的image不会再次下载缓存\n *\n *  @param urlArray image URL Array\n */\n+(void)downLoadImageAndCacheWithURLArray:(NSArray \u003cNSURL *\u003e * )urlArray;\n\n/**\n 批量下载并缓存image,并回调结果(异步)- 已缓存的image不会再次下载缓存\n\n @param urlArray image URL Array\n @param completedBlock 回调结果为一个字典数组,url:图片的url字符串,result:0表示该图片下载缓存失败,1表示该图片下载并缓存完成或本地缓存中已有该图片\n */\n+(void)downLoadImageAndCacheWithURLArray:(nonnull NSArray \u003cNSURL *\u003e * )urlArray completed:(nullable XHLaunchAdBatchDownLoadAndCacheCompletedBlock)completedBlock;\n\n/**\n *  批量下载并缓存视频(异步) - 已缓存的视频不会再次下载缓存\n *\n *  @param urlArray 视频URL Array\n */\n+(void)downLoadVideoAndCacheWithURLArray:(NSArray \u003cNSURL *\u003e * )urlArray;\n\n/**\n 批量下载并缓存视频,并回调结果(异步) - 已缓存的视频不会再次下载缓存\n \n @param urlArray 视频URL Array\n @param completedBlock 回调结果为一个字典数组,url:视频的url字符串,result:0表示该视频下载缓存失败,1表示该视频下载并缓存完成或本地缓存中已有该视频\n */\n+(void)downLoadVideoAndCacheWithURLArray:(nonnull NSArray \u003cNSURL *\u003e * )urlArray completed:(nullable XHLaunchAdBatchDownLoadAndCacheCompletedBlock)completedBlock;\n\n```\n\n### 5.检测是否已缓存\n\n```objc\n\n/**\n *  是否已缓存在该图片\n *\n *  @param url image url\n *\n *  @return BOOL\n */\n+(BOOL)checkImageInCacheWithURL:(NSURL *)url;\n\n/**\n *  是否已缓存该视频\n *\n *  @param url video url\n *\n *  @return BOOL\n */\n+(BOOL)checkVideoInCacheWithURL:(NSURL *)url;\n\n```\n\n### 6.缓存/清理相关\n```objc\n\n/**\n *  清除XHLaunch本地所有缓存\n */\n+(void)clearDiskCache;\n\n/**\n 清除指定Url的图片本地缓存(异步)\n\n @param imageUrlArray 需要清除缓存的图片Url数组\n */\n+(void)clearDiskCacheWithImageUrlArray:(NSArray\u003cNSURL *\u003e *)imageUrlArray;\n\n/**\n 清除指定Url除外的图片本地缓存(异步)\n \n @param exceptImageUrlArray 此url数组的图片缓存将被保留,不会被清理\n */\n+(void)clearDiskCacheExceptImageUrlArray:(NSArray\u003cNSURL *\u003e *)exceptImageUrlArray;\n\n/**\n 清除指定Url的视频本地缓存(异步)\n\n @param videoUrlArray 需要清除缓存的视频url数组\n */\n+(void)clearDiskCacheWithVideoUrlArray:(NSArray\u003cNSURL *\u003e *)videoUrlArray;\n\n/**\n 清除指定Url除外的视频本地缓存(异步)\n \n @param exceptVideoUrlArray 此url数组的视频缓存将被保留,不会被清理\n */\n+(void)clearDiskCacheExceptVideoUrlArray:(NSArray\u003cNSURL *\u003e *)exceptVideoUrlArray;\n\n\n/**\n *  获取XHLaunch本地缓存大小(M)\n */\n+(float)diskCacheSize;\n\n/**\n *  缓存路径\n */\n+(NSString *)xhLaunchAdCachePath;\n\n```\n\n### 7.其它代理方法\n```objc\n/**\n *  图片本地读取/或下载完成回调\n *\n *  @param launchAd  XHLaunchAd\n *  @param image 读取/下载的image\n *  @param imageData 读取/下载的imageData\n */\n-(void)xhLaunchAd:(XHLaunchAd *)launchAd imageDownLoadFinish:(UIImage *)image imageData:(NSData *)imageData;\n{\n    NSLog(@\"图片下载完成/或本地图片读取完成回调\");\n}\n/**\n *  视频下载完成回调\n *\n *  @param launchAd XHLaunchAd\n *  @param pathURL  视频保存在本地的path\n */\n-(void)xhLaunchAd:(XHLaunchAd *)launchAd videoDownLoadFinish:(NSURL *)pathURL\n{\n    NSLog(@\"video下载/加载完成/保存path = %@\",pathURL.absoluteString);\n}\n\n/**\n *  视频下载进度回调\n */\n-(void)xhLaunchAd:(XHLaunchAd *)launchAd videoDownLoadProgress:(float)progress total:(unsigned long long)total current:(unsigned long long)current\n{\n    NSLog(@\"总大小=%lld,已下载大小=%lld,下载进度=%f\",total,current,progress);\n    \n}\n/**\n *  广告显示完成\n */\n-(void)xhLaunchAdShowFinish:(XHLaunchAd *)launchAd\n{\n    NSLog(@\"广告显示完成\");\n}\n\n/**\n 如果你想用SDWebImage等框架加载网络广告图片,请实现此代理(注意:实现此方法后,图片缓存将不受XHLaunchAd管理)\n \n @param launchAd          XHLaunchAd\n @param launchAdImageView launchAdImageView\n @param url               图片url\n */\n-(void)xhLaunchAd:(XHLaunchAd *)launchAd launchAdImageView:(UIImageView *)launchAdImageView URL:(NSURL *)url\n{\n    [launchAdImageView sd_setImageWithURL:url];\n\n}\n\n```\n\n\n##  依赖\n####    1.本库依赖于:FLAnimatedImage\n\n##  安装\n### 1.手动添加:\u003cbr\u003e\n*   1.将 XHLaunchAd 文件夹添加到工程目录中\u003cbr\u003e\n*   2.导入 XHLaunchAd.h\n\n### 2.CocoaPods:\u003cbr\u003e\n*   1.在 Podfile 中添加 pod 'XHLaunchAd'\u003cbr\u003e\n*   2.执行 pod install 或 pod update\u003cbr\u003e\n*   3.导入 XHLaunchAd.h\n\n###\t3.Tips\n*   1.如果发现pod search XHLaunchAd 搜索出来的不是最新版本，需要在终端执行pod repo update命令更新本地spec缓存（需要几分钟），然后再搜索就可以了\n*   2.如果你发现你执行pod install后,导入的不是最新版本,请删除Podfile.lock文件,在执行一次 pod install\n*   3.如果在使用过程中遇到BUG，希望你能Issues我，谢谢（或者尝试下载最新的代码看看BUG修复没有）\n\n##  系统要求\n*   该项目最低支持 iOS 8.0 和 Xcode 8.0\n\n##  许可证\nXHLaunchAd 使用 MIT 许可证，详情见 LICENSE 文件\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderzhuxh%2Fxhlaunchad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderzhuxh%2Fxhlaunchad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderzhuxh%2Fxhlaunchad/lists"}