当前位置:网站首页 > 通栏广告 > 正文

ios 启动添加广告页

作者:admin发布时间:2021-07-26分类:通栏广告浏览:评论:19


导读:大概思路是这个吧.png这个思路很简单,那么我们看看广告页有什么结构:1、广告图片(图片,GIF,视频)等2、跳过按钮(计时器)目前支持图片jpg和gif的格式的广告,后续会补充其...

ios 启动添加广告页

大概思路是这个吧.png

这个思路很简单,那么我们看看广告页有什么结构:

1、广告图片(图片,GIF,视频)等2、跳过按钮(计时器)

目前支持图片jpg和gif的格式的广告,后续会补充其他格式。(gif显示基于框架)

目前的功能点

1、图片做了缓存操作缓存思路是:根据图片的链接作为文件名称,启动的时候回比对服务端的图片链接,如若有变,则保存新的图片作为广告,如果不变则拿缓存的图片作为广告页。2、定时自定义可随意设置广告显示的时间3、每天广告显示次数限制(如果一直启动显示广告,用户会很反感的);

图片缓存代码:

-(void){*=;(self)=self;[^(,iddata){if([dataisKindOfClass:[NSDataclass]]){if(type==HHRADPictureGIF){UIImage*image=[UIImagesd_animatedGIFWithData:data];weakSelf.adImageView.image=image;}else{weakSelf.adImageView.image=[UIImageimageWithData:data];}}elseif([dataisKindOfClass:[NSStringclass]]){dispatch_queue_tglobalqueue=dispatch_get_global_queue(0,0);dispatch_async(globalqueue,^{NSData*image_data=[NSDatadataWithContentsOfURL:[NSURLURLWithString:data]];if([image_datawriteToFile:[selffilePathWihtImagePath:data]atomically:YES]){NSLog(@"广告页缓存成功");}else{NSLog(@"广告页缓存失败");}dispatch_async(dispatch_get_main_queue(),^{if(type==HHRADPictureGIF){UIImage*image=[UIImagesd_animatedGIFWithData:image_data];weakSelf.adImageView.image=image;}else{weakSelf.adImageView.image=[UIImageimageWithData:image_data];}});});}else{//后续补充其他类型}}];}/**缓存路径@paramimagePath图片链接@return图片路径*/-(NSString*)filePathWihtImagePath:(NSString*)imagePath{NSString*cachePath=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES).firstObject;NSString*filePath=[cachePathstringByAppendingPathComponent:imagePath];NSFileManager*fileManager=[NSFileManagerdefaultManager];//下面这个方法很关键直接影响文件缓存[fileManagercreateDirectoryAtPath:[filePathstringByDeletingLastPathComponent]withIntermediateDirectories:YESattributes:nilerror:nil];//returnfilePath;}/**图片数据*/-(void)imageDataWihtUrl:(NSString*)imageUrlcallback:(void(^)(HHRADPictureTypetype,iddata))callback{NSString*filePath=[selffilePathWihtImagePath:imageUrl];HHRADPictureTypetype_p=HHRADPictureJPG;if([filePathhasSuffix:@"gif"]||[filePathhasSuffix:@"GIF"]){type_p=HHRADPictureGIF;}//查看文件是否存在NSFileManager*fileManager=[NSFileManagerdefaultManager];if([fileManagerfileExistsAtPath:filePath]){//如果存在则加载缓存数据NSData*imageData=[NSDatadataWithContentsOfFile:filePath];callback(type_p,imageData);}else{//否则加载网络数据callback(type_p,imageUrl);}}-(void)dismissADView{//清除计时器和视图__weaktypeof(self)weakSelf=self;[UIViewanimateWithDuration:0.25animations:^{weakSelf.alpha=0.0;}completion:^(BOOLfinished){dispatch_cancel(weakSelf.ad_timer);[weakSelfremoveFromSuperview];}];}倒计时相关代码/**设置倒计时@paramtimeLine倒计时时间*/-(void)countDownTime:(NSInteger)timeLine{__blockinttimeOut=(int)timeLine;__weaktypeof(self)weakSelf=self;dispatch_queue_tqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);self.ad_timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0,queue);dispatch_source_set_timer(_ad_timer,dispatch_walltime(NULL,0),1.0*NSEC_PER_SEC,0);dispatch_source_set_event_handler(_ad_timer,^{if(timeOut=0){dispatch_async(dispatch_get_main_queue(),^{[weakSelfdismissADView];});}else{//显示秒数dispatch_async(dispatch_get_main_queue(),^{[weakSelf.skipBtnsetTitle:[NSStringstringWithFormat:@"%ldS跳过",(long)timeOut]forState:0];});timeOut--;}});dispatch_resume(_ad_timer);}//次数限制代码-(BOOL)saveTimes{NSDateFormatter*formatter=[[NSDateFormatteralloc]init];[formattersetDateFormat:@"yyyy-MM-dd"];NSString*dateTime=[formatterstringFromDate:[NSDatedate]];NSString*launchDate=[[NSUserDefaultsstandardUserDefaults]valueForKey:@"LaunchDate"];if(![launchDateisEqualToString:dateTime]){[[NSUserDefaultsstandardUserDefaults]setInteger:0forKey:@"LaunchTimes"];}NSIntegertimesNum=[[NSUserDefaultsstandardUserDefaults]integerForKey:@"LaunchTimes"];if(self.times==0){self.times=99999;};if(timesNumself.times){timesNum++;[[NSUserDefaultsstandardUserDefaults]setInteger:timesNumforKey:@"LaunchTimes"];[[NSUserDefaultsstandardUserDefaults]setValue:dateTimeforKey:@"LaunchDate"];returnYES;}else{returnNO;}}

总体代码上还是比较少的,同时逻辑也是很通俗易懂的,如果有些地方写的不够好,尽请见谅。

©著作权归作者所有,转载或内容合作请联系作者

标签:苹果手机启动页广告


已有19位网友发表了看法:

欢迎 发表评论: