Xcode 12から、新規でアプリを作成する際にLife Cycleという項目が追加されています。また、その際に SwiftUI App が選択できるようになっています。この時のNCMB初期化方法が少し変わりましたので紹介します。
Swift SDKの導入法
Swift SDKはCocoaPods向けに提供しています。Xcodeで新しいiOSプロジェクトを作ったら、Podfileを用意します。
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'todoapp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for todoapp pod 'NCMB', :git => 'https://github.com/NIFCLOUD-mbaas/ncmb_swift.git' end
そして pod install
でSwift SDKをインストールします。
初期化について
Life CycleでSwiftUI Appを選択すると AppDelegate.swift
はなく、 (アプリ名)App.swift
というファイルが作られます。SwiftUI Appは現在デフォルトとなっています。
この場合、まずSwift SDKを読み込みます。
import SwiftUI import NCMB // 追加
そして var body
の上に @Environment
を追加します。
@Environment(\.scenePhase) private var scenePhase // 追加 var body: some Scene {
最後に WindowGroup
に onChange
を追加します。このonChangeの中で初期化処理を行います。
WindowGroup { ContentView() } .onChange(of: scenePhase) { scene in switch scene { case .active: NCMB.initialize(applicationKey: "YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY") } }
sceneは .active
の他、.inactive
や .background
が選択できます。それぞれアプリの状態が変わった時に実行されます。
まとめ
これまでの AppDelegate ではない方法になって、分かりやすくなった部分と分かりづらくなった部分とがあるかと思います。実装時の参考にしてください。