Tüketici SDK'sı Hatalarını Giderme

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

Durum kodlarını çıkarma

Geri çağırmaya iletilen hatalar genellikle gRPC hatalarıdır. Ayrıca, bunlardan ek bilgileri durum kodu biçiminde de çıkarabilirsiniz. Durum kodlarının tam listesi için Durum kodları ve bunların gRPC'de kullanımı konusuna bakın.

Java

onTripUpdateError() üzerinden döndürülen TripUpdateError öğesinden hatayla ilgili ayrıntıları sağlayan bir gRPC durum kodu 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() üzerinden döndürülen TripUpdateError öğesinden hatayla ilgili ayrıntıları sağlayan bir gRPC durum kodu 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:) içinde 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: içinde 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 taraflı hatalar.

Sunucu ve ağ hataları

Aşağıdaki durum kodları ağ veya sunucu hataları içindir ve bunları çö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 genellikle bir sunucu sorunundan kaynaklanır.
İPTAL EDİLDİ Sunucu, giden yanıtı sonlandırdı. Bu durum,
uygulama arka plana gönderildiğinde veya
Tüketici uygulamasında bir durum değişikliği olduğunda gerçekleşir.
KESİNTİ
DEADLINE_EXCEEDED Sunucunun yanıt vermesi çok uzun sürdü.
UNAVAILABLE Sunucu kullanılamıyor. Bu durum genellikle bir ağ sorunundan kaynaklanır.

İstemci hataları

Aşağıdaki durum kodları istemci hataları içindir ve bunları düzeltmek için harekete geçmeniz gerekir. Tüketici SDK'sı, siz yolculuk paylaşımını sonlandırıncaya kadar seyahati yenilemeyi denemeye devam eder ancak siz işlem yapana kadar düzelmeyecektir.

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