Consumer SDK はコールバック メカニズムを使用して、ルート更新エラーをユーザー アプリに送信します。コールバック パラメータはプラットフォーム固有の戻り値の型です(Android では TripUpdateError
、iOS では NSError
)。
ステータス コードの抽出
通常、コールバックに渡されるエラーは gRPC エラーです。また、ステータス コードの形式で追加情報を抽出することもできます。ステータス コードの完全なリストについては、ステータス コードとその gRPC での使用をご覧ください。
Java
onTripUpdateError()
から返された TripUpdateError
から、エラーの詳細を示す gRPC ステータス コードを抽出できます。
// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
Status.Code code = error.getStatusCode();
}
Kotlin
onTripUpdateError()
から返された TripUpdateError
から、エラーの詳細を示す gRPC ステータス コードを抽出できます。
// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
val code = error.getStatusCode()
}
Swift
NSError
は tripModel(_: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
NSError
は tripModel: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;
...
}
}
ステータス コードの解釈
ステータス コードは、サーバーおよびネットワーク関連のエラーとクライアントサイドのエラーという 2 種類のエラーに対応します。
サーバーエラーとネットワークエラー
以下のステータス コードは、ネットワーク エラーまたはサーバーエラーのいずれかを示すものであり、解決するための対応は必要ありません。Consumer SDK によって自動的に復元されます。
Status Code | 説明 |
---|---|
ABORTED | サーバーがレスポンスの送信を停止しました。これは通常、サーバーの問題が原因で発生します。 |
CANCELLED | 送信レスポンスがサーバーで終了しました。これは通常、 アプリがバックグラウンドに送信されたとき、または コンシューマ アプリで状態が変化したときに発生します。 |
INTERRUPTED | |
DEADLINE_EXCEEDED | サーバーの応答に時間がかかりすぎました。 |
UNAVAILABLE | サーバーを利用できませんでした。これは通常、ネットワークの問題が原因で発生します。 |
クライアントエラー
次のステータス コードは、クライアント エラーを示すものであり、解決するには対処する必要があります。Consumer SDK は、乗車経路の共有を終了するまでルートの更新を再試行しますが、ユーザーが操作するまで更新は復元されません。
Status Code | 説明 |
---|---|
INVALID_ARGUMENT | ユーザー アプリが指定したルート名が無効です。ルート名は providers/{provider_id}/trips/{trip_id} の形式にする必要があります。 |
NOT_FOUND | ルートが作成されなかった。 |
PERMISSION_DENIED | 一般ユーザー向けアプリに十分な権限がありません。このエラーは、次の場合に発生します。
|
RESOURCE_EXHAUSTED | リソース割り当てがゼロか、トラフィック フローの速度が速度制限を超えています。 |
UNAUTHENTICATED | JWT トークンが無効なため、リクエストが認証に失敗しました。このエラーは、JWT トークンがルート ID なしで署名されている場合、または JWT トークンの有効期限が切れている場合に発生します。 |