美文网首页
iOS启动页加载广告(带缓存)

iOS启动页加载广告(带缓存)

作者: 小郭哈哈 | 来源:发表于2019-02-27 15:40 被阅读0次
    接上一篇简单实现:https://www.jianshu.com/p/45796cf24ea4

    这次要考虑的问题是:如果广告是动态获取的该如何处理?

    1.先看需求:如果必须要等接口返回广告地址并下载完广告图片才能进入APP,那就只能在AppDelegate做请求的同步,阻塞主线程等广告加载完成显示后才执行后面的代码

    弊端:一般都不会这么处理,必须要考虑到用户如果网络慢的情况下会一直停留在启动页

    2.对图片做缓存:第一次进入APP只会下载远程广告图片在本地,下次启动再直接从缓存中读取,这样就可以排除掉网络因素

    弊端:实时性不强,如果更换广告需要等到第二次启动才会展示

    可以根据实际情况做选择,一般都考虑第二种,毕竟广告展示对用户来说不那么重要

    下面就按第二种方案来实现:

    #pragma mark 加载远程广告 
    - (void)loadAD {
        //广告url
        NSString *adImageUrl = @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1486466389044&di=a7ab421bb82bd0d214bbdc5a6b79f2bf&imgtype=0&src=http%3A%2F%2Fpic.qiantucdn.com%2F58pic%2F17%2F80%2F57%2F94s58PICA7j_1024.jpg";
        
        //点击跳转地址
        NSString *adImagePushUrl = @"https://www.baidu.com/";
        
        SDWebImageManager *sdmanage = [SDWebImageManager sharedManager];
        NSURL *adUrl = [NSURL URLWithString:adImageUrl];
        
        //url是否已被缓存
        if ([sdmanage diskImageExistsForURL:adUrl]) {
            UIImage *startADImage = [sdmanage.imageCache imageFromDiskCacheForKey:adImageUrl];
            if (startADImage) {
                //自定义广告ImageView
                ADImageView *launch = [[ADImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
                launch.image = startADImage;
                //广告点击跳转
                launch.adPicTapClick = ^{
                    //这里是跳转逻辑
                };
                //设置window层级
                [self.window addSubview:launch];
            }
        }
        else {
            //异步下载并缓存以供下次直接读取
            [[SDWebImageManager sharedManager] downloadImageWithURL:adUrl options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {}];
        }
    }
    

    这里结合SDWebImage库完成图片的缓存

    最终效果:

    未命名.gif

    github完整Demo:
    https://github.com/sg369326973/LoadADDemo

    相关文章

      网友评论

          本文标题:iOS启动页加载广告(带缓存)

          本文链接:https://www.haomeiwen.com/subject/cynayqtx.html