V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
newkengsir
V2EX  ›  问与答

几行代码接入启动页广告, 自带图片下载、缓存相关功能, 无任何第三方依赖 - 支持静态/动态、全屏/半屏广告.

  •  
  •   newkengsir · 2016-09-07 09:28:54 +08:00 · 1482 次点击
    这是一个创建于 3036 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 几行代码接入启动页广告.
    • 1.支持全屏 /半屏广告.
    • 2.支持静态 /动态广告.
    • 3.支持广告点击事件
    • 4.自带图片下载,缓存功能.
    • 5.支持设置未检测到广告数据,启动页停留时间
    • 6.无依赖其他第三方框架.
    • 7.支持启动页为 LaunchImage 或者 LaunchScreen.storyboard
    • 8.github 地址

    更新记录:

    • 2016.09.01 -- v2.1.4 -->广告 url 传 nil 或不合法时,按无数据处理
    • 2016.08.25 -- v2.1.3 -->增加半屏广告对 LaunchScreen.storyboard 的支持
    • 2016.08.22 -- v2.1.2 -->增加未检测到广告数据,设置启动页停留时间属性
    • 2016.08.19 -- v2.1.1 -->跳过按钮 bug 修复
    • 2016.08.18 -- v2.1.0 -->API 微调,增加设置跳过按钮类型选项
    • 2016.08.16 -- v2.0 -->1.修复显示广告前 RootViewController 闪现 bug; 2.API 重构,增强实用性
    • 2016.07.18 -- v1.2 -->增加对 GIF 动态广告的支持
    • 2016.07.07 -- v1.1.4 -->优化
    • 2016.07.02 -- v1.1.2 -->增加设置缓存机制选项
    • 2016.06.17 -- v1.1 -->增加倒计时 /跳过按钮
    • 2016.06.13 -- v1.0

    效果

    ###静态广告 /动态广告

    image

    image

    ##API

    • 一共提供两个 API
    • 1.初始化方法
    /**
     *  显示启动广告
     *
     *  @param frame      广告 frame
     *  @param setAdImage 设置 AdImage 回调
     *  @param showFinish 广告显示完成回调
     */
    +(void)showWithAdFrame:(CGRect)frame setAdImage:(setAdImageBlock)setAdImage showFinish:(showFinishBlock)showFinish;
    
    • 2.数据源方法
    /**
     *  设置广告数据
     *
     *  @param imageUrl       图片 url
     *  @param duration       广告停留时间
     *  @param skipType       跳过按钮类型
     *  @param options        图片缓存机制
     *  @param completedBlock 异步加载完图片回调
     *  @param click          广告点击事件回调
     */
    -(void)setImageUrl:(NSString*)imageUrl duration:(NSInteger)duration skipType:(SkipType)skipType options:(XHWebImageOptions)options completed:(XHWebImageCompletionBlock)completedBlock click:(clickBlock)click;
    

    使用方法

    在 AppDelegate 中导入 XHLaunchAd.h 头文件,在 didFinishLaunchingWithOptions:方法中调用下面方法

        
        //1.显示启动广告
        [XHLaunchAd showWithAdFrame:CGRectMake(0, 0,self.window.bounds.size.width, self.window.bounds.size.height-150) setAdImage:^(XHLaunchAd *launchAd) {
                
                //未检测到广告数据,启动页停留时间,默认 3,(设置 4 即表示:启动页显示了 4s,还未检测到广告数据,就自动进入 window 根控制器)
                //launchAd.noDataDuration = 4;
    
                //广告图片地址
                NSString *imgUrl = @"http://c.hiphotos.baidu.com/image/pic/item/d62a6059252dd42a6a943c180b3b5bb5c8eab8e7.jpg";
                //广告停留时间
                NSInteger duration = 6;
                //广告点击跳转链接
                NSString *openUrl = @"http://www.returnoc.com";
    
                //2.设置广告数据
                [launchAd setImageUrl:imgUrl duration:duration skipType:SkipTypeTimeText options:XHWebImageDefault completed:^(UIImage *image, NSURL *url) {
                    
                    //异步加载图片完成回调,若需根据图片尺寸,刷新广告 frame,可在这里操作
                    //launchAd.adFrame = ...;
                    
                } click:^{
                    
                    //广告点击事件
                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:openUrl]];
                    
                }];
                
        } showFinish:^{
            
            //广告展示完成回调,设置 window 根控制器
            self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[UIViewController alloc] init]];
            
        }];
    
    

    3.其他操作

    
    /**
     *  设置未检测到广告数据,启动页停留时间(默认 3s)(最小 1s)
     */
    @property (nonatomic, assign) NSInteger noDataDuration;
    
    /**
     *  重置广告 frame
     */
    @property (nonatomic, assign) CGRect adFrame;
    
    /**
     *  清除图片本地缓存
     */
    +(void)clearDiskCache;
    
    /**
     *  获取缓存图片占用总大小(M)
     */
    + (float)imagesCacheSize;
    

    安装

    1.手动添加:

    • 1.将 XHLaunchAd 文件夹添加到工程目录中
    • 2.导入 XHLaunchAd.h

    2.CocoaPods:

    • 1.在 Podfile 中添加 pod 'XHLaunchAd'
    • 2.执行 pod install 或 pod update
    • 3.导入 XHLaunchAd.h

    3.Tips

    • 1.如果发现 pod search XHLaunchAd 搜索出来的不是最新版本,需要在终端执行 cd ~/desktop 退回到 desktop ,然后执行 pod setup 命令更新本地 spec 缓存(需要几分钟),然后再搜索就可以了
    • 2.如果你发现你执行 pod install 后,导入的不是最新版本,请删除 Podfile.lock 文件,在执行一次 pod install

    系统要求

    • 该项目最低支持 iOS 7.0 和 Xcode 7.0
    newkengsir
        1
    newkengsir  
    OP
       2016-09-07 09:29:22 +08:00
    如果发错节点 麻烦告知一下 ,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:38 · PVG 05:38 · LAX 13:38 · JFK 16:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.