Tüketici SDK'sı Hatalarını Ele Alma

Tüketici SDK'sı, bir geri çağırma mekanizması kullanarak gezi güncelleme hatalarını tüketici uygulamasına gönderir. Geri çağırma parametresi, platforma özel bir dönüş türüdür (Android'de TripUpdateError ve iOS'te NSError).

Durum kodlarını çıkart

Geri çağırmaya iletilen hatalar genellikle gRPC hatalarıdır. Dilerseniz bu hatalardan ek bilgileri durum kodu biçiminde de çıkarabilirsiniz. Durum kodlarının tam listesi için Durum kodları ve gRPC'de kullanılmaları bölümüne bakın.

Java

onTripUpdateError() öğesinden döndürülen TripUpdateError öğesinden, hatayla ilgili ayrıntılar sağlayan bir gRPC durum kodunu ayıklayabilirsiniz.

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

Kotlin

onTripUpdateError() öğesinden döndürülen TripUpdateError öğesinden, hatayla ilgili ayrıntılar sağlayan bir gRPC durum kodunu ayıklayabilirsiniz.

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

Swift

NSError, tripModel(_:didFailUpdateTripWithError:) sonra geri aranır.

// 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: sonra geri aranır.

// 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;
    ...
  }
}

Durum kodlarını yorumlama

Durum kodları iki tür hatayı kapsar: sunucu ve ağla ilgili hatalar ve istemci tarafı hataları.

Sunucu ve ağ hataları

Aşağıdaki durum kodları ağ veya sunucu hataları içindir ve bu hataları çözmek için herhangi bir işlem yapmanız gerekmez. Tüketici SDK'sı bunları otomatik olarak kurtarır.

Durum KoduAçıklama
İPTAL EDİLDİ Sunucu, yanıt göndermeyi durdurdu. Bu durum, genellikle sunucudaki bir sorundan kaynaklanır.
İPTAL EDİLDİ Sunucu giden yanıtı sonlandırdı. Bu durum normalde
uygulama arka plana gönderildiğinde veya
tüketici uygulamasında bir durum değişikliği olduğunda ortaya çıkar.
KESİLDİ
DEADLINE_EXCEEDED Sunucunun yanıt vermesi çok uzun sürdü.
UNAVAILABLE Sunucu kullanılamıyor. Bu durum genellikle ağ ile ilgili bir sorundan kaynaklanır.

İstemci hataları

Aşağıdaki durum kodları istemci hataları içindir. Bu hataları çözmek için işlem yapmanız gerekir. Tüketici SDK'sı, siz yolculuk paylaşımını sonlandırana kadar geziyi yenilemeyi denemeye devam eder ancak siz işlem yapana kadar düzelmez.

Durum KoduAçıklama
INVALID_ARGUMENT Tüketici uygulaması geçersiz bir gezi adı belirtti. Gezi adı providers/{provider_id}/trips/{trip_id} biçiminde olmalıdır.
NOT_FOUND Gezi hiç oluşturulmadı.
PERMISSION_DENIED Tüketici uygulamasının izinleri yeterli değil. Bu hata aşağıdaki durumlarda ortaya çıkar:
  • Tüketici uygulamasının izinleri yok
  • Google Cloud Console'daki proje için Tüketici SDK'sı etkinleştirilmemiş.
  • JWT jetonu yok veya geçersiz.
  • JWT jetonu, istenen geziyle eşleşmeyen bir gezi kimliğiyle imzalanmış.
RESOURCE_EXHAUSTED Kaynak kotası sıfırdır veya trafik akışı hızı hız sınırını aşıyor.
KİMLİK DOĞRULAMADI Geçersiz bir JWT jetonu nedeniyle isteğin kimlik doğrulaması başarısız oldu. Bu hata, JWT jetonu bir seyahat kimliği olmadan imzalandığında veya JWT jetonunun süresi dolduğunda ortaya çıkar.