首页 > 其他分享 >iOS APP启动广告实现方式 与 APP唤端调用

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

时间:2023-04-27 20:55:06浏览次数:30  
标签:唤端 URL APP iOS application window 广告 options

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    

标签:唤端,URL,APP,iOS,application,window,广告,options
From: https://www.cnblogs.com/zhou--fei/p/17360189.html

相关文章

  • PHP8编译安装报错make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
    make:***[ext/fileinfo/libmagic/apprentice.lo]错误1 解决:当配置PHP时出现make:***[ext/fileinfo/libmagic/apprentice.lo]Error1时是因为服务器内存不足1G只需要在配置命令中添加--disable-fileinfo即可......
  • idea 开发 mule app
    官方的anypointstudio是基于ecsplise开发的我们idea基于运行时3.9.0如果是4使用官方插件安装插件mule-esb-plugin-for-intellijRAMLPluginForIntelliJDataWeavePluginforIntelliJ新建项目newproject->mueappplication选择运行时3.9.0(自动找MUL......
  • ApplicationContextAware
    在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能。为了让Bean获取它所在的Spring容器,可以让该Bean实现ApplicationContextAware接口。ApplicationContextAware通过它Spring容器......
  • app逆向之安卓native层安全逆向分析(六):frida调试跟栈+unidbg补环境大动作
    前言继续跟着龙哥的unidbg学习:SO逆向入门实战教程六:s_白龙~的博客-CSDN博客还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足,哈哈。感谢观看的朋友分析 首先抓个包看看: 这里面这个sign,就是今天的重点了这个......
  • JS通过axios提交application/x-www-form-urlencoded类型的数据
    使用axios提交类型为application/x-www-form-urlencoded数据的正确姿势:letformData=newURLSearchParams()formData.append('param1',param1)formData.append('param2',param2)axios({url:'http://xxx.xxx.xxx.xxx/xxx',method:'......
  • Unity跟IOS原生开发项目融合
    更多精品文章Aladdin的博客需求:做一款社交类的APP,主体工程是原生开发,也就是是IOS的Xcode工程,产品经理为了丰富应用的玩法,就想往里面加上现在比较流行的AR功能,组成一款AR社交APP,我们之前见识多的都是工程是主体,然后IOS原生功能或者代码作为插件添加进Unity的Plugin里面,这样的方式参......
  • 超级App的构建与技术驱动
    ​通过构建小程序,企业可以更加方便快捷地为用户提供优质的服务和产品,同时也可以更好地引入第三方生态系统,拓展企业的商业模式和增长空间。此外,小程序技术的应用也在不断创新和拓展,例如小程序联合登录、小程序支付、小程序数据分析等,为企业带来更多的商业机遇和竞争优势。因此,新零......
  • uniapp-小程序
    使用uniapp开发小程序遇到的坑:使用uni-swipe-action-item左右滑动会报错swiperaction.closeOtherisnotafunction   :auto-close="autoClose"设置false,不启用自动关闭功能;:show="item.isShow"这个属性来控制关闭开启,这样即可关闭使用uni-group进行分段(可能其他场景也......
  • uniapp脚手架项目抖音小程序中使用了uView框架中的IndexList 索引列表组件报错uni.req
    解决办法如果您是vue-cli模式的项目,还需要在项目根目录的vue.config.js文件中进行如下配置://vue.config.js,如没有此文件则手动创建module.exports={transpileDependencies:['uview-ui']}......
  • IOS内购数据拉取
    目标:拉取appstoreconnect内购数据拉取,自己做数据报表。1:api秘钥接口需要token,token生成需要秘钥。参考官方文档:https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api 。  vendorNumber在这个界面查找: ......