Menangani Error SDK Konsumen

Consumer SDK mengirim error update perjalanan ke aplikasi konsumen menggunakan callback mekanisme atensi. Parameter callback adalah jenis nilai yang ditampilkan khusus platform ( TripUpdateError di Android, dan NSError di iOS).

Mengekstrak kode status

Error yang diteruskan ke callback biasanya merupakan error gRPC, dan Anda juga dapat mengekstrak informasi tambahan dari mereka dalam bentuk kode status. Untuk daftar lengkap kode status, lihat Kode status dan penggunaannya di gRPC.

Java

Anda dapat mengekstrak kode status gRPC yang memberikan detail tentang error dari TripUpdateError yang ditampilkan dari onTripUpdateError().

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

Kotlin

Anda dapat mengekstrak kode status gRPC yang memberikan detail tentang error dari TripUpdateError yang ditampilkan dari onTripUpdateError().

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

Swift

NSError dipanggil kembali di 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 dipanggil kembali di 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;
    ...
  }
}

Menafsirkan kode status

Kode status mencakup dua jenis kesalahan: kesalahan server dan jaringan, dan {i>client-side<i}.

Error server dan jaringan

Kode status berikut ditujukan untuk kesalahan jaringan atau server, dan Anda tidak perlu mengambil tindakan apa pun untuk menyelesaikannya. Consumer SDK secara otomatis pulih dari serangan tersebut.

Kode StatusDeskripsi
ABORTED Server berhenti mengirim respons. Hal ini biasanya disebabkan oleh masalah server.
DIBATALKAN Server menghentikan respons keluar. Hal ini biasanya terjadi ketika
aplikasi dikirim ke latar belakang, atau saat ada perubahan status pada
Aplikasi konsumen.
INTERRUPTED
DEADLINE_EXCEEDED Server membutuhkan waktu terlalu lama untuk merespons.
UNAVAILABLE Server tidak tersedia. Hal ini biasanya disebabkan oleh jaringan masalah.

Error klien

Kode status berikut ditujukan untuk error klien, dan Anda harus mengambil tindakan untuk menyelesaikannya. Consumer SDK terus mencoba memuat ulang perjalanan hingga Anda berbagi perjalanan akhir, tetapi hal ini tidak akan dipulihkan sampai Anda mengambil tindakan.

Kode StatusDeskripsi
INVALID_ARGUMENT Aplikasi Konsumen menentukan nama perjalanan yang tidak valid; Nama perjalanan harus ikuti format providers/{provider_id}/trips/{trip_id}.
NOT_FOUND Perjalanan tidak pernah dibuat.
PERMISSION_DENIED Aplikasi Konsumen tidak memiliki izin yang memadai. Error ini terjadi saat:
  • Aplikasi Konsumen tidak memiliki izin
  • Consumer SDK tidak diaktifkan untuk project di Google Cloud Konsol Play.
  • Token JWT tidak ada atau tidak valid.
  • Token JWT ditandatangani dengan ID perjalanan yang tidak cocok dengan perjalanan yang diminta.
RESOURCE_EXHAUSTED Kuota resource nol, atau laju aliran traffic melebihi batas kecepatan.
TIDAK DIAUTENTIKASI Autentikasi permintaan gagal karena token JWT tidak valid. Ini terjadi baik ketika token JWT ditandatangani tanpa ID perjalanan, atau saat token JWT kedaluwarsa.