Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

アプリエラーの処理 - 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()
}
}
}

戻る

Atlas Functionの呼び出し