이번 포스팅에서는 iOS 프로젝트 생성시 앱의 최소 버전을 12이하로 설정하는 법에 대해 적어보겠습니다.

참고자료 :
Create a new iOS12 project in Xcode11


iOS 12 이후부터는 앱의 생명주기와 UI의 생명주기가 달라지므로 더 낮은 버전을 사용하고 싶을 때는 수정해줘야 하는 부분이 있습니다.

생명주기에 대한 자세한 정보는 [iOS] AppDelegate & SceneDelegate에서 확인하시면 됩니다.

Deplyment Target 수정

현재 앱 타겟의 General 탭에서 Deployment Info 를 수정해줍니다.

DeployTarget

@available

프로젝트 첫 생성시 Xcode는 앱의 최소 버전을 13버전 이상으로 셋팅합니다.

최소 버전을 12 이하로 설정하려면 몇가지를 수정해줘야 합니다.

  1. SceneDelegate.swift SceneDelegate는 iOS 13 이후 버전에 서 필요하므로 availability attributes인 @available을 SceneDelegate 클래스에 추가해줍니다.
        @available(iOS 13.0, *)
        class SceneDelegate: UIResponder, UIWindowSceneDelegate {
          ...
        }
    
  2. AppDelegate.swift AppDelegate에 선언되어 있는 메서드 중 두개의 메서드는 SceneSession을 관리하는 메서드입니다. 마찬가지로 각각 @available 를 추가해줍니다.
        // MARK: UISceneSession Lifecycle
        @available(iOS 13.0, *)
        func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
          ...
        }
           
        @available(iOS 13.0, *)
        func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
          ...
        }
    
  3. UIWindow 마지막으로 SceneDelegate에서 Scene을 관리하기 위하여 선언해주었던 UIWindow 변수를 Window 관리를 위하여 AppDelegate에 선언해줍니다.
        class AppDelegate: UIResponder, UIApplicationDelegate {
        	var window: UIWindow?
        }
    



Before I finish

이 글을 쓰는 시점에서는 여전히 많은 앱들이 iOS 12이하 버전을 지원하고 있습니다. 물론 이후에는 더이상 예전의 생명주기를 설정해주지 않을 날도 오겠지만 또 다른 생명주기를 사용할 수도 있기 때문에 조금더 해당 설정을 편리하게 설정할 수 있으면 더 좋지 않을까하는 생각이 들었습니다 😂

이상 포스팅을 마치겠습니다.🙈