😑

SwiftUI開発でAppDelegateを操作する

2024/08/24に公開

まずAppDelegateとは。。。

AppDelegateは、iOSアプリのライフサイクルイベント(起動、終了、バックグラウンド遷移など)を管理するクラスです。具体的には、アプリ起動時に通知設定や初期設定を行い、バックグラウンド遷移時には特定の処理を実行します。これにより、アプリの機能性が向上し、ユーザーにとっての利便性が増します。

目的

アプリ起動時のEventでログを出力可能にする。

実装

SwiftUIアプリではプロジェクト作成時にはAppDelegateファイルが作成されませんが、@UIApplicationDelegateAdaptorを使うことで、AppDelegateの機能を利用できます。

1. AppDelegateクラスの作成

新規ファイルを作成し、以下のようにAppDelegateクラスを定義します。

import Foundation
import UIKit

class AppDelegate: NSObject, UIApplicationDelegate {
    
    /// <#Description#>
    /// アプリ起動時の処理
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        
        print("___application:didFinishLaunchingWithOptions")
        
        return true
        
    }
}

2. AppDelegateの紐付け

プロジェクト名の最上位ファイル(ZennApp)で、作成したAppDelegateを紐付けます。

import SwiftUI

@main
struct ZennApp: App {
    
    let persistenceController = PersistenceController.shared
    
    // appDelegateの設定
    @UIApplicationDelegateAdaptor (AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
                .environment(\.managedObjectContext, persistenceController.container.viewContext)
        }
    }
}

この状態でアプリを起動すると、アプリ起動時に___application:didFinishLaunchingWithOptionsがログに出力されることを確認できます。

次回は、このアプリ起動時の処理にローカル通知の送信を追加し、アプリ起動後に通知を受信できるようにします。

Discussion