iOS开屏广告的实现技巧,含Demo源代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看137 回复回复4 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 137|回复: 4
收起左侧

iOS开屏广告的实现技巧,含Demo源代码

[复制链接]
广告主 发表于 2016-10-27 11:29:16 | 显示全部楼层 |阅读模式
快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑
本帖最后由 广告主 于 2016-10-27 21:52 编辑



1、前言

记得在创新工场的时候产品经理让我实现这个功能,当时我想了一个方案,但是可惜最后产品不需要这个功能了。时隔1年多,新公司又要让我写这个东西了,这几天我完善了一下功能,我决定开源一下这个功能,虽然市场上已经有很多应用都有这个功能了,我只是想分享一下我的实现技巧,100个人有100个想法。




2、实现思路

这两种开屏广告大家都见过吧?一种是半屏,一种是全屏广告。

如图:

iOS开屏广告的实现技巧 1

iOS开屏广告的实现技巧,含Demo源代码 - 敏捷大拇指 - iOS开屏广告的实现技巧 1




2.1、障眼秘籍:

咱们从头开始分析。iOS启动的时候有一个默认开屏页,这个页会一闪而过。我们想在这里加入广告,一定要用到障眼法。所谓障眼法就是我们的广告是压在一个和默认开屏页一抹一样的图片上面。当用户看到了开屏页后,我们用一个和开屏页一样的图压在上面,用户还以为这个就是系统的页面,此时上面广告压上,这样就完美实现了。这里的难点是有的App这个假页面大小和App原来的不一样,这样效果就不好了。这里我写了一个获取系统LaunchImage图片的类,大家可以精确获取系统默认开屏图片,达到天衣无缝的效果。

传送门->

游客,如果您要查看本帖隐藏内容请回复




2.2、缓存秘籍:

以为用户不是用一次App就再也不用了,用户肯定会多次打开app的。虽然已经实现了障眼秘籍,但是如果网速慢图片大,总不能让用户看3秒默认启动图吧?那样体验太不好了,因此还是加入缓存机制比较好。我的实现思路是,第一次不让用户去看这个3秒广告了,直接略过,开一个线程去缓存这张图片。第二次用户再启动App的时候,再显示图片,这里渐隐动画和假启动页配合好,天衣无缝。这里的缓存用到了SDWebImage中的SDWebImageManager。



2.3、其它秘籍:

此处是执行广告页逻辑之前要实现的一些东西,大家可以自由发挥。我在公司项目中是按照如图所示逻辑。Github的demo简单使用userdefault做的演示。

如图:

iOS开屏广告的实现技巧 2

iOS开屏广告的实现技巧,含Demo源代码 - 敏捷大拇指 - iOS开屏广告的实现技巧 2





3、主要实现代码

不喜欢贴太多代码,贴一个调用代码,主要是思路,建议直接看demo吧。

[Objective-C] 纯文本查看 复制代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    ViewController *VC = [ViewController new];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:VC];
    self.window.rootViewController = nav;

    NSString *picUrl = @"http://785j3g.com1.z0.glb.clouddn.com/d659db60-f.jpg";
    NSString *userDefaultKey = @"download_key";

    if ([[[NSUserDefaults standardUserDefaults] stringForKey:userDefaultKey] isEqualToString:@"1"]) {
        IanAdsStartView *startView = [IanAdsStartView startAdsViewWithBgImageUrl:picUrl withClickImageAction:^{
            IANWebViewController *VC = [IANWebViewController new];
            VC.title = @"这可能是一个广告页面";
            [(UINavigationController *)self.window.rootViewController pushViewController:VC animated:YES];
        }];

        [startView startAnimationTime:3 WithCompletionBlock:^(IanAdsStartView *startView){
            NSLog(@"广告结束后,执行事件");
        }];
    } else { // 第一次先下载广告
        [IanAdsStartView downloadStartImage:picUrl];

        [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:userDefaultKey];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    return YES;
}


Demo传送门--->

游客,如果您要查看本帖隐藏内容请回复


如图:

iOS开屏广告的实现技巧 3

iOS开屏广告的实现技巧,含Demo源代码 - 敏捷大拇指 - iOS开屏广告的实现技巧 3





4、总结

每个人都有不同的实现方法,你的实现方法是什么呢?




发完《iOS开屏广告的实现技巧,含Demo源代码》,再来发《Swift3.0基于CollectionView的轮播广告控件、请接好》。欢迎前去阅读。




游客,如果您要查看本帖隐藏内容请回复


都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 贡献 +10 专家分 +10 收起 理由
Anewczs + 10 + 10 + 10 32个赞!专家给力!

查看全部评分

本帖被以下淘专辑推荐:

Ding 发表于 2016-10-27 13:45:24 | 显示全部楼层
实现差不多。
不过楼主貌似在AppDelegate里写了过多代码,可以封装一个自定义view,专门做启动广告,AppDelegate简单调用即可。要是需求加上了倒计时啥的,到时候只在自定义view里写逻辑(功能简单的话,就不写model啥的了)。
Ding 发表于 2016-10-27 13:48:00 | 显示全部楼层
细看本来就是有倒计时的~
如果后边需求改成用户滑动看三张图,到最后一张来个进入app按钮啥的这样的~不是很恰当,总之需求是经常变的~
 楼主| 广告主 发表于 2016-10-27 21:38:54 | 显示全部楼层
Ding 发表于 2016-10-27 13:48
细看本来就是有倒计时的~
如果后边需求改成用户滑动看三张图,到最后一张来个进入app按钮啥的这样的~不是 ...

连个开屏广告都越来越复杂了有木有?
Ding 发表于 2016-10-28 08:09:43 | 显示全部楼层
广告主 发表于 2016-10-27 21:38
连个开屏广告都越来越复杂了有木有?

据说中国的APP逻辑比国外的复杂多了。就像中国的食物和国外的食物~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表