美文网首页
启动图与全屏广告图的无缝切换

启动图与全屏广告图的无缝切换

作者: 古月思吉 | 来源:发表于2019-01-09 14:53 被阅读0次
    • 背景:
      启动图之后常常需要展示全屏的app广告,在广告结束之前,不能看见app首页。

    • 难点:
      (1)请求广告图的网络请求超时时间一般在3秒之内;
      (2)启动图的展示时间非常短暂,可能还没有等请求广告图的网络请求结束,就加载出了app首页;
      (3)如果在广告图的网络请求结束之后再设置 AppDelegate 的 window?.rootViewController ,在弱网情况下,可能会出现长时间黑屏。

    • 思路1:
      先设置 AppDelegate 的 window?.rootViewController 之后,再进行广告页的网络请求。
      这样做的优势是简单,广告页的网络请求与普通网络请求无异,请求回了数据就展示;不足的是启动图之后已经看见了app首页,然后才出现广告图,这种方式,就类似于app内的广告弹窗功能,与需求不符。
    • 思路2:
      先进行广告页的网络请求,请求结束后,再设置 AppDelegate 的 window?.rootViewController 之后。
      在弱网情况下,启动图之后,由于长时间不设置 rootViewController ,会导致一段时间的黑屏。在黑屏期间,就需要创建一个假的启动图,实际上是一个控制器,长相跟启动图完全一样。将这个“启动图控制器”暂时设置为 rootViewController。

    相关代码:

    1、AppDelegate.swift文件:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
           // Override point for customization after application launch.
           
           self.createWindow()
           
           return true
       }
    
    /// 创建window
       func createWindow() {
           self.window = UIWindow(frame: UIScreen.main.bounds)
           self.window?.makeKeyAndVisible()
           self.window?.rootViewController = LaunchScreenDefaultController()
           ConfigTool.share.getGuidePages(successBlock: { (modelArray) in
               let tabBarController = BaseTabBarController()
               self.window?.rootViewController = tabBarController
           }, failureBlock: {
               let tabBarController = BaseTabBarController()
               self.window?.rootViewController = tabBarController
           })
       }
    

    2、app的启动图用的是 LaunchScreen.storyboard 方式(直接在这个storyboard画布上放上启动图即可,这样能够适配各种机型,是实现启动图最简单的方式)。
    3、LaunchScreenDefaultController.swift文件,是一个长相与启动图完全一样的vc,作用是在进行广告图的网络请求期间,暂时设置为 AppDelegate 的 window?.rootViewController 。
    4、广告图网络请求的超时时间设置为3秒。

    相关文章

      网友评论

          本文标题:启动图与全屏广告图的无缝切换

          本文链接:https://www.haomeiwen.com/subject/skxgrqtx.html