コンシューマ SDK エラーの処理

Consumer SDK がコールバックを使用して、ルート更新情報のエラーをユーザーアプリに送信します。 メカニズムです。コールバック パラメータはプラットフォーム固有の戻り値の型( TripUpdateErrorNSError

ステータス コードを抽出する

通常、コールバックに渡されるエラーは gRPC エラーですが、 ステータス コードの形式で追加情報を抽出します。対象: ステータス コードの完全なリストについては、 ステータス コードと gRPC での使用

Java

エラーの詳細を示す gRPC ステータス コードを抽出できます。 onTripUpdateError() から返された TripUpdateError から取得。

// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
  Status.Code code = error.getStatusCode();
}

Kotlin

エラーの詳細を示す gRPC ステータス コードを抽出できます。 onTripUpdateError() から返された TripUpdateError から取得。

// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
  val code = error.getStatusCode()
}

Swift

NSErrortripModel(_:didFailUpdateTripWithError:) でコールバックされます。

// Called when there is a trip update error.
func tripModel(_ tripModel: GMTCTripModel, didFailUpdateTripWithError error: Error?) {
  // Check to see if the error comes from gRPC.
  if let error = error as NSError?, error.domain == "io.grpc" {
    let gRPCErrorCode = error.code
    ...
  }
}

Objective-C

NSErrortripModel:didFailUpdateTripWithError: でコールバックされます。

// Called when there is a trip update error.
- (void)tripModel:(GMTCTripModel *)tripModel didFailUpdateTripWithError:(NSError *)error {
  // Check to see if the error comes from gRPC.
  if ([error.domain isEqualToString:@"io.grpc"]) {
    NSInteger gRPCErrorCode = error.code;
    ...
  }
}

ステータス コードを解釈する

ステータス コードは、サーバーおよびネットワーク関連のエラーと、 クライアントサイドのエラーです。

サーバー エラーとネットワーク エラー

次のステータス コードは、ネットワーク エラーまたはサーバー エラーを示すものです。 解決のための対応は不要ですConsumer SDK が自動的に 復元します。

ステータス コード説明
ABORTED サーバーがレスポンスの送信を停止しました。この問題は通常 発生します。
CANCELLED サーバーが送信レスポンスを終了しました。これは通常 次の場合に起こります。
アプリがバックグラウンドに送られたときや、テーブルで状態が変化したときに
ユーザーアプリ。
INTERRUPTED
DEADLINE_EXCEEDED サーバーの応答に時間がかかりすぎました。
UNAVAILABLE サーバーにアクセスできませんでした。これは通常、ネットワークや 困難です。

クライアントエラー

次のステータス コードはクライアント エラーを示します。 解決できます。Consumer SDK はルートの更新を再試行し続けます。 履歴の共有は終了しますが 復元はできません

ステータス コード説明
INVALID_ARGUMENT ユーザー アプリが指定したルート名が無効です。旅行名は providers/{provider_id}/trips/{trip_id} の形式に従います。
NOT_FOUND ルートが作成されない。
PERMISSION_DENIED ユーザー アプリに十分な権限がありません。このエラーは、次の場合に発生します。
<ph type="x-smartling-placeholder">
    </ph>
  • ユーザー アプリに権限がない
  • Google Cloud のプロジェクトで Consumer SDK が有効になっていない できます。
  • JWT トークンがないか、無効です。
  • JWT トークンが、一致していないルート ID で署名されています。 ルートが表示されます。
RESOURCE_EXHAUSTED リソース割り当てがゼロであるか、トラフィック フローのレートが 制限します。
UNAUTHENTICATED JWT トークンが無効なため、リクエストが認証に失敗しました。この JWT トークンがルート ID なしで署名された場合、または JWT トークンの有効期限が切れたとき。