Xcode13(iOS 15)になって、SwiftUI周りの挙動が変わっています。特に変わったのがアプリの初期化のタイミングで、WindowGroupのonChangeが呼ばれるのが遅くなってしまいました。
元々NCMBの初期化をWindowGroupのonChangeにて行っていたのですが、これだとアプリ起動時に認証やデータ取得を行っていると、初期化前に実行されるようになってしまいます。
そこで初期化のタイミングをinitに移すのをお勧めします。
NCMB Swift SDKのインストール
Xcode13になって、SDKのインストール法も変わっています。
Xcodeにて次の操作を行います。
プロジェクト選択 → PROJECTでプロジェクトを選択 → Package Dependencies で +
を押す
これで依存パッケージをインストールするダイアログが出るので https://github.com/NIFCLOUD-mbaas/ncmb_swift.git
を入力してインストールします。
SDKのインポート
(アプリ名)App.swiftファイルにてSDKをインポートします。
import NCMB
初期化する
Appではinitが初期化のタイミングで呼ばれるので、ここでNCMBの初期化処理を行います。関数名は init です。
@main
struct NCMBDemoApp: App {
init() {
// APIキーの設定とSDK初期化
NCMB.initialize(applicationKey: "YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
まとめ
NCMBが初期化されていない状態で実行すると emptyApplicationKey
というエラーメッセージが出ますので注意してください。もし、そのエラーメッセージが出た場合には、初期化タイミングの問題かも知れませんので、この記事を参考に修正してみてください。
イントロダクション (Swift) : クイックスタート(Swift UI App版) | ニフクラ mobile backend