アプリエラーの処理 - Kotlin SDK
アプリエラーは、次の 2 つの主要なカテゴリに分類されます。
Atlas App Services のリクエストが HTTP レベルで失敗すると、サービス エラーが発生します。 これらのエラーは ServiceExceptionを生成します
Device Sync が失敗すると、同期エラーが発生します。 これらのエラーはSyncExceptionを生成します。 同期の例外の詳細については、 「 同期エラーの処理 」を参照してください。
ただし、一部のエラーは一時的なものであり、クライアントまたは SDK の制御外の障害によって発生します。 たとえば、ネットワーク エラーによりログイン試行が失敗したとします。
その他のエラーにはロジックの修正が必要です。 たとえば、認証情報が正しくないためにログイン試行が失敗したとします。
一時的なエラーが発生した場合は、エラーの原因となった操作を再試行する必要があります。 操作を再試行しても失敗する場合は、ロジックの修正を調査します。
サービス エラー
ServiceExceptionは、Atlas App Services リクエストが HTTP レベルで失敗した場合、つまり HTTP リクエストが返されたが HTTP ステータス コードが200 ( OK )ではなかった場合に発生します。
接続エラー
ConnectionExceptionは、SDK と App Services バックエンド間での HTTP 通信に失敗した場合、つまりHTTP リクエストはステータス コードを受信できません。
これらのエラーは SDK の制御外のネットワーク レイヤーに関連するため、これらのエラーはエフェメラルと見なす必要があります。 操作を再試行し、再試行が失敗した場合はエラーを調べます。 クライアント デバイスがオフラインになって操作が失敗した場合は、インターネットに再接続するときにアプリユーザーに操作を再試行するようリクエストできます。
無効なリクエスト エラー
RedRequestExceptionは、不正なApp Services requestsから発生します。
不適切なリクエスト エラーが発生した場合
操作の入力を確認します。
仕組みの詳細については、 アプリログ を確認してください。
認証エラー
ログイン、ログアウト、登録などのユーザー アカウントのアクションが失敗した場合、 AuthExceptionが発生します。 通常、解決策を識別するのに役立つ、より具体的なサブタイプが取得されます。
ユーザーはすでに確認済みのエラー
すでに確認済みのユーザーを 確認 しようとすると、 UserAlreadyConfirmedException が発生します。
ユーザーがすでに確認済みのエラーを受け取った場合は、アプリケーション フローを中断しないようにすることをお勧めします。 ユーザーが確認されているため、安全にログインを続行できます。 確認を再試行する必要はありません。
ユーザーが見つからないエラー
App Services バックエンドが指定されたユーザー名を持つユーザーを見つけられない場合、 UserNotFoundExceptionが発生します。 これは通常、メール/パスワードのユーザー名の入力ミスが原因です。
このエラーが発生した場合は、ユーザーにユーザー名を再入力するよう求め、もう一度試行してください。
ユーザーはすでに存在するエラー
UserAlreadyExistsExceptionは、そのアプリで既に使用されているユーザー名を持つユーザーをクライアントが登録しようとした場合に発生します。
このエラーが発生した場合は、ユーザーに次の操作を求めるようにしてください。
別のユーザー名を使用
すでにアカウントを持っている場合は、既存のユーザー名でログイン
無効な認証情報エラー
無効な認証情報が原因で、 、メール/パスワード、または キー ユーザーのログインに失敗したときに InvalidCredentialsException が発生します。JSON web tokenAPI代わりに他の認証プロバイダは認証エラーをスローします。
例
Kotlin に組み込まれている runCatching を使用して、SDK でエラーを処理できます API。返された 結果 のonSuccess
および コールバックを使用onFailure
SDK API呼び出しの成功とエラー発生を処理するため。次の例では、匿名ユーザーをアプリにログインさせます。ログイン試行が成功した場合は、成功した認証試行をログに記録し、ユーザーを別の画面に移行します。ログイン試行が失敗した場合、潜在的なエラーケースをそれぞれ個別に処理します。
ユーザーが無効な認証情報を提供した場合、その試行をログに記録し、ユーザーが認証情報を確認するよう促します。
ネットワーク接続に問題が発生した場合は、問題をエラー ログに記録し、ユーザーがネットワーク接続を確認して再度試行するよう促します。
その他のすべてのエラーでは、問題をエラー ログに記録し、ログイン試行が失敗したことをユーザーに通知するポップアップ トーストを表示します。
val app = App.create(YOUR_APP_ID) runCatching { app.login(Credentials.emailPassword(email, password)) }.onSuccess { Log.v("Successfully logged in") // transition to another activity, load a fragment, to display logged-in user information here }.onFailure { ex: Throwable -> when (ex) { is InvalidCredentialsException -> { Log.v("Failed to login due to invalid credentials: ${ex.message}") Toast.makeText(baseContext, "Invalid username or password. Please try again.", Toast.LENGTH_LONG).show() } is ConnectionException -> { Log.e("Failed to login due to a connection error: ${ex.message}") Toast.makeText(baseContext, "Login failed due to a connection error. Check your network connection and try again.", Toast.LENGTH_LONG).show() } else -> { Log.e("Failed to login: ${ex.message}") // generic error message for niche and unknown fail cases Toast.makeText(baseContext, "Login failed. Please try again.", Toast.LENGTH_LONG).show() } } }