ユーザーの作成と削除 - Swift SDK
ユーザーの作成
ほとんどの認証方法で、Atlas App Services はユーザーが初めて認証するときにユーザー オブジェクトを自動的に作成します。 例外は、メール/パスワード認証です。 メール/パスワード認証を使用する場合は、ユーザーが App Services App で認証する前に、ユーザーを登録して確認する必要があります。
Tip
Appleアカウントの削除要件
Apple は、アプリケーションが App Store App Storeリストされることを要求しています 。 アカウントを作成したすべてのユーザーに、アカウントを削除するオプションを提供する必要があります。メールや パスワード認証など、ユーザーを手動で登録する必要がある認証方法を使用する場合でも、Apple でサインインなどのユーザーを自動的に作成する認証方法を使用する場合でも、 年 6 月30 日までに ユーザー アカウントの削除 を実装する必要があります。 。2022
ユーザーを削除する
バージョン 10.23.0 の新機能。
ユーザー オブジェクトでdeleteメソッドを呼び出して、アプリからユーザー オブジェクトを削除できます。 これにより、ローカル データがクリアされるだけでなく、サーバーから オブジェクトが削除されます。
重要
ユーザーを削除すると、関連するメタデータを含む場合はユーザー オブジェクトのみが削除されます。 これは、アプリケーションからカスタム ユーザー データまたはユーザーが入力したデータを削除することはありません。 Apple はデータの保持と削除のポリシーを公開することを要求します アプリケーションのカスタマーにメッセージを表示し、ユーザー データの削除をリクエストする方法を提供します。追加のユーザー データを収集する場合は、そのデータを削除するために独自のメソッドまたはプロセスを実装する必要があります。
Async/Await によるユーザーの削除
アプリケーションが Apple の async/await 構文を使用する場合:
func testAsyncDeleteUser() async throws { // Logging in using anonymous authentication creates a user object let syncUser = try await app.login(credentials: Credentials.anonymous) // Now we have a user, and the total users in the app = 1 XCTAssertNotNil(syncUser) XCTAssertEqual(app.allUsers.count, 1) // Call the `delete` method to delete the user try await syncUser.delete() // When you delete the user, the SyncSession is destroyed and // there is no current user. XCTAssertNil(app.currentUser) // Now that we've deleted the user, the app has no users. XCTAssertEqual(app.allUsers.count, 0) }
Realm Swift SDK バージョン 10.15.0 および 10.16.0 以降では、Realm API の多くが Swift async/await 構文をサポートしています。 プロジェクトは、次の要件を満たしている必要があります。
Swift SDK バージョン | Swift バージョン要件 | サポートされている OS |
---|---|---|
10.25.0 | Swift 5.6 | iOS 13.x |
10.15.0 または 10.16.0 | Swift 5.5 | iOS 15.x |
アプリが async/await
コンテキストで Realm にアクセスする場合は、スレッド関連のクラッシュを回避するためにコードを@MainActor
でマークします。
完了ハンドラーによるユーザーの削除
アプリケーションが async/await を使用しない場合:
// Logging in using anonymous authentication creates a user object app.login(credentials: Credentials.anonymous) { [self] (result) in switch result { case .failure(let error): fatalError("Login failed: \(error.localizedDescription)") case .success(let user): // Assign the user object to a variable to demonstrate user deletion syncUser = user } } // Later, after the user is loggedd in we have a user, // and the total users in the app = 1 XCTAssertNotNil(syncUser) XCTAssertEqual(app.allUsers.count, 1) // Call the `delete` method to delete the user syncUser!.delete { (error) in XCTAssertNil(error) } // When you delete the user, the SyncSession is destroyed and // there is no current user. XCTAssertNil(app.currentUser) // Now that we've deleted the user, the app has no users. XCTAssertEqual(app.allUsers.count, 0)