iOS APP启动广告分析及一行代码解决方案

2017-10-18  本文已影响87人  ZhangCc_

一、广告页功能思路

二、步骤

1、首先判断APP是否是第一次进入或者版本更新,如果是,启动引导页;如果不是,再判断是否需要显示广告。
if ([Manager isFirstLaunch]) {
        //一句代码启动引导页
        [GuidePageView sharedWithImages:@[@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg"] buttonImage:@"post_normal" buttonFrame:CGRectMake(0, -10, SCREEN_WIDTH, SCREEN_HEIGHT)];`
    }else {
        //显示广告页
        //后台在开发广告api的时候增加一个字段来判断是否启用广告
        if (self.isShowAdPage) {}
        //一句代码调用广告页
        [ADPageView showAdPageView];
   }
2、创建一个展示广告的Imageview和添加跳过广告的倒计时按钮
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        //广告页
        _adView = [[UIImageView alloc] initWithFrame:frame];
        _adView.userInteractionEnabled = YES;
        _adView.contentMode = UIViewContentModeScaleAspectFit;
        _adView.clipsToBounds = YES;
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushToAd)];
        [_adView addGestureRecognizer:tap];
        
        //跳过按钮
        _skipBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _skipBtn.backgroundColor = RGBAColor(38, 38, 38, 0.6);
        _skipBtn.layer.cornerRadius = 4;
        [_skipBtn setTitle:[NSString stringWithFormat:@"跳过%d",showTime] forState:UIControlStateNormal];
        [_skipBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        _skipBtn.titleLabel.font = [UIFont systemFontOfSize:15.0f];
        [_skipBtn addTarget:self action:@selector(dismissAdView) forControlEvents:UIControlEventTouchUpInside];
        
        [self addSubview:_adView];
        [self addSubview:_skipBtn];
        _skipBtn.sd_layout
        .widthIs(60)
        .heightIs(30)
        .topSpaceToView(self, 20)
        .rightSpaceToView(self, 20);
        
        [self showAdView];
    }
    return self;
}
3、广告页加载,先从沙盒查找,有,则显示,并下载更新,删除旧图片;没有,下载,保存。
- (void)showAdView {
    //先出沙盒读取路径
    NSString *filePath = [self getFilePathWithImageName:UserDefaultObjectForKey(adImageName)];
    BOOL isExist = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
    
    if (isExist) {
        
        [self startTimer];
        UIWindow *window = [UIApplication sharedApplication].keyWindow;
        [window addSubview:self];
        
        [_skipBtn setTitle:[NSString stringWithFormat:@"跳过%d",showTime] forState:UIControlStateNormal];
        _adView.image = [UIImage imageWithContentsOfFile:filePath];
        _adView.contentMode = UIViewContentModeScaleAspectFill;
        _adUrl = UserDefaultObjectForKey(adUrl);
    }
    //无论沙盒中是否存在广告图片,都需要重新调用广告接口,判断广告是否更新
    [self getAdImage];
}
4、图片下载,保存图片名和跳转的广告链接
- (void)downLoadAdImageWithUrl:(NSString *)imageUrl imageName:(NSString *)imageName {
    
    NSURL *url = [NSURL URLWithString:imageUrl];
    
    [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url options:SDWebImageDownloaderUseNSURLCache progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
        //开始存储图片
        NSString *filePath = [self getFilePathWithImageName:imageName];
      
        if ([UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]) {
            [self deleteOldImage];
            //存新图片和新广告链接
            UserDefaultSetObjectForKey(imageName, adImageName);
            UserDefaultSetObjectForKey(imageUrl, adUrl);
            UserDefaultSynchronize;
        }
    }];
}

Demo下载

GitHub:https://github.com/CCBrother/ADPageViewDemo

上一篇 下一篇

猜你喜欢

热点阅读