コンシューマ SDK エラーの処理
Consumer SDK がコールバック メカニズムを使用して、ルートの更新エラーをユーザーアプリに送信します。コールバック パラメータは、プラットフォーム固有の戻り値の型(Android では TripUpdateError
、iOS では NSError
)です。
ステータス コードを抽出する
通常、コールバックに渡されるエラーは 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
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 トークンの有効期限が切れている場合に発生します。 |