私は、CloudKit
公開されているデータを保存するために使用してNSPersistentCloudKitContainer
おり、コア データ スタックの一部として新しいものを使用して、プライベート データを保存/同期しています。
ユーザーがアプリを開くと、次の 4 つの状態のいずれかになります。
- 彼らはiCloudにアクセスできる新しいユーザーです
- 彼らはiCloudにアクセスできるリピーターです
- 彼らは新しいユーザーですが、何らかの理由でiCloudにアクセスできません
- 彼らはリピーターですが、何らかの理由で iCloud にアクセスできません。
状態 1 と 2 は、私の幸せな道を表しています。彼らが新しいユーザーである場合、最初のビューを表示する前に、ユーザーのプライベート ストアにデータをシードしたいと思います。彼らがリピーターの場合は、Core Data からデータを取得して初期ビューに渡したいと思います。
新しい/古いユーザーの決定:
私の計画は を使用することNSUbiquitousKeyValueStore
です。これに関する私の懸念は
、アプリをダウンロードする->以前にアプリを起動したことが記録されている->新しいデバイスでアプリを削除して再インストール/インストールする場合の処理です。更新を受け取るには時間がかかる
と思わNSUbiquitousKeyValueStore
れるので、最初のビューに移動する前に、同期が完了するまで待ちます。次に、iCloud にアクセスできない場合はどうなるかという問題があります。NSUbiquitousKeyValueStore
アップデートを受け取れない場合、彼らがリピーターかどうかはどうすればわかりますか?
iCloud アクセスの決定:
私が行った調査に基づいて、iCloud が利用可能かどうかを確認することFileManager.default.ubiquityIdentityToken
はできますが、理由nil
はわかりません。iCloud が利用できない理由を知るために使用する必要があります。問題は、非同期呼び出しであり、アカウントのステータスが何であるかを知る前に、アプリが先に進んでしまうことです。CKContainer.default().accountStatus
私は本当にこれに頭を悩ませています。これらすべての状態が適切に処理されるようにする最善の方法は何ですか?