[SwiftUI][iOSアプリ]AppDelegateと@UIApplocationDelegateAdapter

SwiftUI

2021/5/10

「AppDelegateって何?」

「@UIApplicationDelegateAdapterってなんで使うの?」

と言う人に向けて、この記事は書かれています。

どうも、ちょげ(@chogetarou)です。

AppDelegateと言う、UIkitの時から使われているクラスがあります。

iOS14からは、デフォルトでは作成されなくなりました。

なので、iOS14から開発を始めた人にとっては、謎のクラスなわけです。

そこで、今回はAppDelegateクラスについて解説します。

スポンサーリンク

アプリのイベント管理

インターフェース, インターネット, プログラム, ブラウザ, Www

AppDelegateは、元々アプリ起動時、最初に呼ばれるクラスです。

アプリ全体のイベントを管理するためのコードが含まれています。

このクラスにコードを追加することで、

  • アプリの初期設定
  • プッシュ通知
  • ファイル共有

といったことが出来ます。

雛形

AppDelegateの雛形は、以下のようになっています。

class AppDelegate:  UIResponder, UIApplicationDelegate {
    func application (_ application: UIApplication, launchOptions: [UIApplication.launchOptionKey: Any]?)
                               -> Bool {
                //処理
               return true
    }
}

処理の部分に初期設定やプッシュ通知の作成などを記述します。

アプリに適用

iOS14からは、AppDelegateクラスがデフォルトで作成されなくなることはお伝えしました。

つまり、今までのようにクラスを作っただけでは、アプリはデリゲートクラスを認識してくれないのです。

アプリにデリゲートクラスを使うよ!と知らせる必要があります。

そこで登場するのが、@ApplicationDelegateAdapter(長いので以下アダプター)です。

〜App .swiftファイルで、プロパティラッパを用いた宣言をすることで、アプリでデーリゲートクラスを使用することが出来るようになります。

struct DeleApp: App {
    var body: some Scene {
          //デリゲート使います
          @ApplectionDelegateAdapter(AppDelegate.self) var appDelegate
          WindowGroup {
                 ContentView()
          }
   }
}

これでアプリ起動時にAppDelegateクラスが呼ばれるようになります。

まとめ

  • AppDelegateは、アプリ起動時に呼ばれる
  • AppDelegateは、アプリ全体のイベントを管理している
  • AppDelegateは、作成するだけでは使えない
  • @ApplicationDelegateAdapterを使うことによって、アプリでAppDelegateが使えるようになる

この記事が少しでも参考になれば嬉しいです。

読んで頂きありがとうございました。

では、サラダバー!

参考

Amazon.co.jp: 1人でアプリを作る人を支えるSwiftUI開発レシピ (技術の泉シリーズ(NextPublishing)) eBook : 佐藤 剛士: 本
Amazon.co.jp: 1人でアプリを作る人を支えるSwiftUI開発レシピ (技術の泉シリーズ(NextPublishing)) eBook : 佐藤 剛士: 本
Amazon.co.jp: SwiftUI 徹底入門 eBook : 金田 浩明: Kindleストア
Amazon.co.jp: SwiftUI 徹底入門 eBook : 金田 浩明: Kindleストア
Amazon.co.jp: 絶対に挫折しない iPhoneアプリ開発「超」入門 第7版 【Xcode 10 & iOS 12】 完全対応 eBook : 高橋 京介: 本
Amazon.co.jp: 絶対に挫折しない iPhoneアプリ開発「超」入門 第7版 【Xcode 10 & iOS 12】 完全対応 eBook : 高橋 京介: 本

コメント

タイトルとURLをコピーしました