iOS APP启动广告实现方式 与 APP唤端调用

这篇具有很好参考价值的文章主要介绍了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, 当然也可以定义多个。
注册如下:
iOS APP启动广告实现方式 与 APP唤端调用
用safari在地址栏输入xyz://123就可以打开自己的APP了
其中123为想APP传参的参数。
 
白名单问题
由于iOS9对http的限制,APP需要在info.plist中添加要使用到的Url scheme到白名单中,这样才能使用系统检测是否安装了这些APP,进而打开这些APP。
在“Info.plist”中搜索,添加key:Queried URL Schemes,然后将要使用的URL Schemes列为白名单,这样就可正常检查白名单中的应用是否安装了。
白名单添加如下:
iOS APP启动广告实现方式 与 APP唤端调用
<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
 
 

文章来源地址https://www.toymoban.com/news/detail-427280.html

到了这里,关于iOS APP启动广告实现方式 与 APP唤端调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从 iOS App 启动速度看如何为基础性能保驾护航

    启动是App给用户的第一印象,一款App的启动速度,不单单是用户体验的事情,往往还决定了它能否获取更多的用户。所以到了一定阶段App的启动优化是必须要做的事情。App启动基本分为以下两种 App 点击启动前,它的进程不在系统里,需要系统新创建一个进程分配给它启动的

    2024年02月16日
    浏览(42)
  • 从一个APP启动另一个APP的activity的方式

    1、通过自定义action启动 这种方式只需要在代码中设置一个action即可, 系统会自动过滤去找到这个action所对应的Activity 当前APP的代码 待启动APP 的activity在AndroidManifest.xml中的配置 2、通过在Intent中通过指定包名和类名来查找 直接在当前APP中写以下代码,即可打开指定APP的acti

    2024年02月08日
    浏览(51)
  • flutter App如何跳转小程序如何调用微信sdk(ios/andriod)

            实不相瞒,这一块着实耗费了我很大的时间,因为没有太多ios和andriod原生开发的知识储备,在很多方面就会踩不少坑,这里总结几种app跳转微信小程序的方式 第一种方案:使用明文URL Scheme 这是最简单!不需要太多配置的方式!但是这里有一个坑就是对于ios是无痛拉

    2024年03月14日
    浏览(75)
  • iOS启动优化之——如何使用Xcode Log、App Launch、代码来计算启动时间 Launch Time

    在iOS启动优化之——如何使用MetricKit 来计算启动时间 Launch Time ,我们提到,可以使用MetricKit 在Organizer中或者直接代码统计,那么还能用什么来统计呢? Xcode曾经提供了一些环境变量比如DYLD_PRINT_STATISTICS来提供时间统计(参考Xcode 动态库环境变量——不止DYLD_PRINT_STATISTICS),

    2023年04月25日
    浏览(63)
  • 苹果ios的系统app应用WebClip免签应用开源及方式原理

    在移动设备上,为了方便访问我们经常使用的网站或服务,我们经常会希望将其添加到主屏幕上,以便快速启动。虽然我们可以通过使用浏览器书签实现这一目标,但添加一个图标到主屏幕上,使得它看起来与原生App无异,将为用户提供更好的使用体验。在本文中,我们将介

    2024年02月04日
    浏览(45)
  • vue h5 项目中与 app 安卓 or ios 进行交互 方式, h5与app交互

    vue h5 项目中与 app 安卓 or ios 进行交互 方式, h5与app交互 前端同学可以加我一起交流一起进步 案例描述:需求是 混合开发中,H5页面与原生app安卓或者ios交互(包括,调用app的方法,或者app调用 h5中定义的方法)从而实现交互 项目场景:开发帮助中心页面,帮助中心页面采

    2024年02月11日
    浏览(47)
  • 微信小程序和APP:关于跳转及调用支持方式整理

    支持 通过内容web-view形式跳转H5 必要条件 :需要微信小程序配置对应的业务域名,以及在H5的服务器中存放业务域名校验文件。 如无上述表要条件,则微信小程序无法实现H5访问 文档地址 :web-view | 微信开放文档 支持 例如:京东小程序 通过wx.navigateToMiniProgram方法来跳转其他

    2024年02月10日
    浏览(42)
  • 从iOS App启动速度看如何为基础性能保驾护航 | 京东物流技术团队

    启动是App给用户的第一印象,一款App的启动速度,不单单是用户体验的事情,往往还决定了它能否获取更多的用户。所以到了一定阶段App的启动优化是必须要做的事情。App启动基本分为以下两种 App 点击启动前,它的进程不在系统里,需要系统新创建一个进程分配给它启动的

    2024年02月15日
    浏览(41)
  • 安卓App自启动,两种不同的方式!!!支持到安卓4.4

    自己给车机买了CarPlay盒子,但是车机启动后需要点击App才能使用,十分拉闸!!!所以做了这个自启动器。 因为 它是apk文件 它是基于安卓4.4开发的 所以 它能安装到所有的安卓平台上 它只能安装到安卓4.4以后的机子上 开机程序自启代码【主要在AndroidManifest.xml】 主要的逻辑

    2024年02月12日
    浏览(88)
  • python 启动IOS APP(iphone),Appium和Selenium的By的用法, By 和AppiumBy

    from appium import webdriver from time import sleep from appium.webdriver.common.appiumby import AppiumBy from selenium.webdriver.common.by import By driver = webdriver.Remote(command_executor = \\\'http://127.0.0.1:4723/wd/hub\\\', desired_capabilities = { \\\"platformName\\\": \\\"ios\\\", \\\"appium:deviceName\\\": \\\"iPhone Jeff\\\", \\\"appium:platformVersion\\\": \\\"16.5.1\\\", \\\"appium:bundl

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包