iOS APP启动广告实现方式 与 APP唤端调用
Posted 滴水微澜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS APP启动广告实现方式 与 APP唤端调用相关的知识,希望对你有一定的参考价值。
APP启动广告功能实现要从2个方面思考
一是UI方案,怎样处理广告页与主页之间的切换方式。
二是广告页展示时机,是使用后台实时广告数据还是使用本地缓存广告数据。后台数据方式获取广告最新但是用户要等待后台返回数据后才能展示,增加用户等待时间。使用本地缓存启动速度快但数据更新不及时。
UI方案实现
双Window方案
广告window在上面,主页window在下面,双方通过调用window.makeKeyAndVisible+UIView动画,切换显示。
// 多window实现,同时存在2个window,1个在下面,1个在上面, 通过调用makeKeyAndVisible()让一个window称为要展示的那个 self.window = UIWindow(frame: UIScreen.main.bounds) let nav = UINavigationController(rootViewController: TabViewController()) window?.rootViewController = nav window?.makeKeyAndVisible() self.adWindow = UIWindow(frame: UIScreen.main.bounds) let adVC = adViewViewController() let nav = UINavigationController(rootViewController: adVC) adWindow?.rootViewController = nav adWindow?.makeKeyAndVisible()
单Window方案
window.rootVC = 广告VC window.rootVC = 主页VC 双方通过UIView.transition转场动画,切换显示。 UIView.transition(with: appDelegate.window!, duration: 0.5, options: .transitionCrossDissolve) appDelegate.window?.rootViewController = appDelegate.rootNavController! completion: _ in // do something
数据存储方案
首次启动时,不展示广告页,进入首页时下载广告数据到本地保存。
后面启动时,先读取本地广告数据,进入广告页展示。广告页展示完后进入主页,然后再次去后台下载新的广告数据覆盖本地就的广告数据。
APP唤端调用
当被别的APP通过广告或者其他方式调起时,如何处理?
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED; - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED; - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can\'t open for some reason
iOS前后提供了3个系统代理方法来接受唤端调用,而根据现在APP对iOS系统版本支持的情况来说,使用最新的,支持iOS9以上应该满足大部分场景了。上面2个方法在iOS9以上的系统是不调用的。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool self.openUrl(url) return true
URL Scheme是为方便app之间互相调用而设计的, 就像www.baidu.com这个URL可以唯一定义一台主机, iOS系统中的weibo://这个URL Scheme可以唯一标识一个APP。
这样当通过调用系统的openUrl方式打开其他APP时,系统就可以通过url scheme锁定住哪一个APP,进而打开它。并且可以通过这种方式传递一些参数。
当安装一个APP时,就会向系统中注册一个URL Scheme, 那么如果系统中出现了多个重复的URL Scheme,系统该如何调用的,调用的优先级是系统>先安装的>后安装的。
URL Schemes 解释
平常说的URL是指的网站地址,如:http://www.apple.com
Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符 http。
注册 URLScheme
可以给自己的APP注册URLScheme,这样外界就可以利用注册的URLScheme打开自己的APP了
在Target->Info->URL Types下点击“+”号,为APP定义一个Scheme, 当然也可以定义多个。
注册如下:
用safari在地址栏输入xyz://123就可以打开自己的APP了
其中123为想APP传参的参数。
白名单问题
由于iOS9对http的限制,APP需要在info.plist中添加要使用到的Url scheme到白名单中,这样才能使用系统检测是否安装了这些APP,进而打开这些APP。
在“Info.plist”中搜索,添加key:Queried URL Schemes,然后将要使用的URL Schemes列为白名单,这样就可正常检查白名单中的应用是否安装了。
白名单添加如下:
<key>LSApplicationQueriesSchemes</key> <array> <!-- 微信 URL Scheme 白名单--> <string>wechat</string> <string>weixin</string> <!-- 新浪微博 URL Scheme 白名单--> <string>sinaweibohd</string> <string>sinaweibo</string> </array>
参考文章:
https://juejin.cn/post/6939922873591005221
https://blog.csdn.net/shimazhuge/article/details/79450412
iOS 如何实现广告跟踪,例如:App(a) 安装归功于 app(b) 广告 [关闭]
【中文标题】iOS 如何实现广告跟踪,例如:App(a) 安装归功于 app(b) 广告 [关闭]【英文标题】:iOS How to achieve advert tracking e.g.:App(a) is installed owe to the app(b) advert [closed] 【发布时间】:2014-10-24 08:45:13 【问题描述】:我想知道如何实现广告跟踪,例如:App(a) 是由于 app(b) 广告而安装的。谁能告诉我,谢谢。
【问题讨论】:
【参考方案1】:在广告中使用转化概念。 不同的服务提供商都有办法知道有多少点击的广告以安装为目标。
以 Google 为例:https://developers.google.com/app-conversion-tracking/?hl=fr
【讨论】:
在答案中添加了链接以上是关于iOS APP启动广告实现方式 与 APP唤端调用的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发在 App 中加入 AdMob 广告 - 入门介绍与编程技巧