美文网首页
启动图广告思路

启动图广告思路

作者: Leon1024 | 来源:发表于2019-05-27 19:25 被阅读0次
1、在AppDelegate启动方法中切换根控制器为广告展示控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    ADVC *vc = [[ADVC alloc] init];
    self.window.rootViewController = vc;
    return YES;
}

2、广告图控制器
#import "ADVC.h"

@interface ADVC ()

@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIButton *skipButton;
@property (strong, nonatomic) NSTimer *skipTimer;

@end

static NSInteger kSkipTimeout = 5;
static NSString *const kNeedShowADYES = @"YES";
static NSString *const kNeedShowADKey = @"isNeedShowAD";
static NSString *const kADImagePathKey = @"ADImagePath";

@implementation ADVC

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupADImage];
}

#pragma mark - UI交互

- (IBAction)skipButtonClicked:(id)sender {
    [self endADShow];
}

- (IBAction)ADButtonClicked:(id)sender {
    // 用 NSUserDefaults 配置值来标识用户在广告业是否点击了广告,此方法比采用通知的方法更稳定
    [[NSUserDefaults standardUserDefaults] setValue:kNeedShowADYES forKey:kNeedShowADKey];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [self endADShow];
}

#pragma mark - UI设置

- (void)setupADImage {
    NSString *imagePath = (NSString *)[[NSUserDefaults standardUserDefaults] valueForKey:kADImagePathKey];
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
    if (image) {
        self.imageView.image = image;
        [self setupSkipButtonTitle];
        self.skipButton.hidden = NO;
        // 开启倒计时
        self.skipTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(skipTimerAction) userInfo:nil repeats:YES];
    }else{
        [self endADShow];
    }
}

- (void)setupSkipButtonTitle {
    NSString *title = [NSString stringWithFormat:@"%ldS 跳过", kSkipTimeout];
    [self.skipButton setTitle:title forState:UIControlStateNormal];
}

#pragma mark - otherMethods

- (void)skipTimerAction {
    if (kSkipTimeout >= 0) {
        [self setupSkipButtonTitle];
        kSkipTimeout -= 1;
        return;
    }
    [self endADShow];
}

- (void)endADShow {
    [self.skipTimer invalidate];
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UITabBarController *tabBarVC = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbarvc"];
    [UIApplication sharedApplication].delegate.window.rootViewController = tabBarVC;
}


@end


3、在需要启动广告业详情的控制器中
#import "ViewController.h"
#import "ADDetailsVC.h"

@interface ViewController ()

@end

static NSString *const kNeedShowADKey = @"isNeedShowAD";
static NSString *const kADImagePathKey = @"ADImagePath";
static NSString *const kADImageName = @"launchImageName";

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewDidAppear:(BOOL)animated {
    // 检查是否有点击广告,如有则打开广告详情页并删除有点击广告的标记
    if ([[NSUserDefaults standardUserDefaults] valueForKey:kNeedShowADKey]) {
        ADDetailsVC *vc = [[ADDetailsVC alloc] init];
        [self.navigationController pushViewController:vc animated:YES];
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:kNeedShowADKey];
    }
    
    // 无论如何都在此重新加载广告信息,并存储广告图片和广告链接,还要记得删除旧的图片(这步其实可以交给SDWebImage)
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic143.nipic.com/file/20171016/3046502_091455265001_2.jpg"]];
    NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = (NSString *)[filePaths objectAtIndex:0];
    NSString *imageSavePath = [path stringByAppendingPathComponent:kADImageName];
    [imageData writeToFile:imageSavePath atomically:YES];
    // 存储图片路径
    [[NSUserDefaults standardUserDefaults] setValue:imageSavePath forKey:kADImagePathKey];
}


@end

4、注意在启动广告详情的控制器中,最好把push详情控制器放在 - (void)viewDidAppear:(BOOL)animated 方法中,避免转场动画冲突造成push不成功。

相关文章

  • 启动图广告思路

    1、在AppDelegate启动方法中切换根控制器为广告展示控制器 2、广告图控制器 3、在需要启动广告业详情的控...

  • iOS启动图和开屏广告图,类似网易

    iOS启动图和开屏广告图,类似网易 iOS启动图和开屏广告图,类似网易

  • 启动图思路

    我们这里的启动图是第一次启动 的时候先缓存,然后第二次才下发要显示的图片。据说这是为了更实时的检测广告数据。然后广...

  • 这就是 封装  iOS 启动页

    iOS 启动广告页思路,直接 push,首页不出现,上海华新镇风味 PM 提了个需求,启动广告界面点击了, 就直接...

  • iOS开发-动态获取LaunchImage里的启动图和APPic

    应用场景: 我们在应用启动后,往往会在启动图加载完成之后,去获取广告图进行展示。但加载广告图往往需要耗费未知的时间...

  • iOS App启动+广告思路

    需求 很多App(如淘宝、京东、美团、饿了么等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过...

  • app启动页广告思路

    最近又有做了个app启动页广告功能 虽然市面上n多的demo和方案 但我还是决定把我的也拿出来分享给大家, 因为我...

  • 启动app广告页面思路

    第一次启动不加载广告业,请求后台对model进行缓存,图片进行下载,三小时内轮流播放,播放最后一张图片后三小时后再...

  • iOS启动图之坑

    之前项目图省事,就用LaunchScreen.storyboard 启动了, 现在启动图接入了开屏广告,就要更换启...

  • iOS启动图和开屏广告图,类似网易

    启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该广告图可以跳...

网友评论

      本文标题:启动图广告思路

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