SwiftUIでアプリを作成していた際に、起動時の処理を実装する必要が生まれAppDelegate
を実装する必要が出てきたので、その手順を備忘録として書き留めておきます。
生成されるファイルについて
Xcode 12でプロジェクトを新規作成するとLifecycle
という項目が追加されています。
これをUIKit App Delegate
にすることで今まで通りAppDelegate
などが作成されます。
一方でSwiftUI App
を選択すると<プロジェクト名>App.swiftファイルが生成されます。
今回は、後者の<プロジェクト名>App.swiftファイル
でのAppDelegateの実装方法について記述していきます。
SwiftUI Appで起動時の処理を実装する方法
@UIApplicationDelegateAdaptor
を使用することで、既存のAppDelegateを利用することができるようになります。
import SwiftUI
@main
struct SwiftUIAppSample: App {
// swiftlint:disable weak_delegate
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate // 追加する
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
// 以下を追加する
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
// 必要に応じて処理を追加
}
UIKit App Delegate
よりもコード記述量を減らして実装することができます。
以上がSwiftUIでAppDelegateを実装する手順になります。