New file |
| | |
| | | // |
| | | // AdvertiseHelper.m |
| | | // MobileProject 启动广告帮助类 |
| | | // |
| | | // Created by wujunyang on 16/6/14. |
| | | // Copyright © 2016年 wujunyang. All rights reserved. |
| | | // |
| | | |
| | | #import "AdvertiseHelper.h" |
| | | |
| | | static NSString *const adImageName = @"adImageName"; |
| | | @implementation AdvertiseHelper |
| | | |
| | | static AdvertiseHelper* _instance = nil; |
| | | + (instancetype)sharedInstance |
| | | { |
| | | static dispatch_once_t onceToken; |
| | | dispatch_once(&onceToken, ^{ |
| | | _instance = [[self alloc] init]; |
| | | }); |
| | | return _instance; |
| | | } |
| | | |
| | | - (instancetype)init |
| | | { |
| | | self = [super init]; |
| | | if (self) { |
| | | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(adClick:) name:NotificationContants_Advertise_Key object:nil]; |
| | | } |
| | | return self; |
| | | } |
| | | |
| | | |
| | | + (void)showAdvertiserView:(NSArray<NSString *> *)imageArray |
| | | { |
| | | // 1.判断沙盒中是否存在广告图片,如果存在,直接显示 |
| | | NSString *filePath = [[AdvertiseHelper sharedInstance] getFilePathWithImageName:[NSUserDefaults.standardUserDefaults valueForKey:adImageName]]; |
| | | |
| | | BOOL isExist = [[AdvertiseHelper sharedInstance] isFileExistWithFilePath:filePath]; |
| | | if (isExist) {// 图片存在 |
| | | AdvertiseView *advertiseView = [[AdvertiseView alloc] initWithFrame:UIScreen.mainScreen.bounds]; |
| | | advertiseView.filePath = filePath; |
| | | [advertiseView show]; |
| | | } |
| | | |
| | | // 2.无论沙盒中是否存在广告图片,都需要重新调用广告接口,判断广告是否更新 |
| | | [[AdvertiseHelper sharedInstance] getAdvertisingImage:imageArray]; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 初始化广告页面 |
| | | */ |
| | | - (void)getAdvertisingImage:(NSArray<NSString *> *)imageArray |
| | | { |
| | | //随机取一张 |
| | | NSString *imageUrl = imageArray[arc4random() % imageArray.count]; |
| | | NSArray *stringArr = [imageUrl componentsSeparatedByString:@"/"]; |
| | | NSString *imageName = stringArr.lastObject; |
| | | |
| | | // 拼接沙盒路径 |
| | | NSString *filePath = [self getFilePathWithImageName:imageName]; |
| | | BOOL isExist = [self isFileExistWithFilePath:filePath]; |
| | | if (!isExist){// 如果该图片不存在,则删除老图片,下载新图片 |
| | | [self downloadAdImageWithUrl:imageUrl imageName:imageName]; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 判断文件是否存在 |
| | | */ |
| | | - (BOOL)isFileExistWithFilePath:(NSString *)filePath |
| | | { |
| | | NSFileManager *fileManager = [NSFileManager defaultManager]; |
| | | BOOL isDirectory = FALSE; |
| | | return [fileManager fileExistsAtPath:filePath isDirectory:&isDirectory]; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 下载新图片 |
| | | */ |
| | | - (void)downloadAdImageWithUrl:(NSString *)imageUrl imageName:(NSString *)imageName |
| | | { |
| | | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ |
| | | |
| | | NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]; |
| | | NSString *filePath = [self getFilePathWithImageName:imageName]; // 保存文件的名称 |
| | | |
| | | if ([data writeToFile:filePath atomically:YES]) {// 保存成功 |
| | | NSLog(@"保存成功"); |
| | | [self deleteOldImage]; |
| | | [NSUserDefaults.standardUserDefaults setValue:imageName forKey:adImageName]; |
| | | [NSUserDefaults.standardUserDefaults synchronize]; |
| | | // 如果有广告链接,将广告链接也保存下来 |
| | | }else{ |
| | | NSLog(@"保存失败"); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 删除旧图片 |
| | | */ |
| | | - (void)deleteOldImage |
| | | { |
| | | NSString *imageName = [NSUserDefaults.standardUserDefaults valueForKey:adImageName]; |
| | | if (imageName) { |
| | | NSString *filePath = [self getFilePathWithImageName:imageName]; |
| | | NSFileManager *fileManager = [NSFileManager defaultManager]; |
| | | [fileManager removeItemAtPath:filePath error:nil]; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据图片名拼接文件路径 |
| | | */ |
| | | - (NSString *)getFilePathWithImageName:(NSString *)imageName |
| | | { |
| | | if (imageName) { |
| | | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES); |
| | | NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:imageName]; |
| | | return filePath; |
| | | } |
| | | return nil; |
| | | } |
| | | |
| | | //NotificationContants_Advertise_Key |
| | | - (void)adClick:(NSNotification *)noti |
| | | { |
| | | NSString *url = @"https://github.com/NJHu"; |
| | | if (!TWIsEmpty(url)) { |
| | | if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]]) { |
| | | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{@"username" : @"njhu"} completionHandler:^(BOOL success) { |
| | | NSLog(@"%zd", success); |
| | | }]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | - (void)dealloc { |
| | | [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| | | } |
| | | |
| | | @end |