處理消費者 SDK 錯誤

Consumer SDK 利用回呼,將行程更新錯誤傳送至消費者應用程式 以注意力機制為基礎回呼參數是平台專屬的傳回類型 ( TripUpdateError敬上 在 Android 裝置上,以及 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

系統會在 tripModel(_:didFailUpdateTripWithError:) 中回呼 NSError

// 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

系統會在 tripModel:didFailUpdateTripWithError: 中回呼 NSError

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

解讀狀態碼

狀態碼涵蓋兩種錯誤:伺服器和網路相關錯誤,以及 用戶端錯誤。

伺服器和網路錯誤

下列狀態碼適用於網路或伺服器錯誤, 您不需要採取任何行動來解決問題。Consumer SDK 會自動取得 復原時間

狀態碼說明
ABORTED 伺服器已停止傳送回應。這通常是由 伺服器的問題。
已取消 伺服器已終止傳出回應。這通常 會發生在
應用程式傳送至背景,或容器中的狀態變更
消費者應用程式。
INTERRUPTED
DEADLINE_EXCEEDED 伺服器回應的時間過長。
無法使用 伺服器無法使用。這通常是由網路造成的 問題。

用戶端錯誤

下列狀態碼代表用戶端錯誤,您必須採取行動 解決問題。Consumer SDK 會繼續重試行程,直到您 必須等到您採取行動之後才能恢復共用歷程。

狀態碼說明
INVALID_ARGUMENT 消費者應用程式指定的行程名稱無效。行程名稱必須 請採用 providers/{provider_id}/trips/{trip_id} 格式。
NOT_FOUND 這個行程從未建立。
PERMISSION_DENIED 消費者應用程式權限不足。發生這個錯誤的原因包括:
  • 消費者應用程式沒有權限
  • Google Cloud 中的專案未啟用 Consumer SDK 控制台。
  • 缺少 JWT 權杖或權杖無效。
  • 簽署 JWT 權杖的行程 ID 與 。
RESOURCE_EXHAUSTED 資源配額為零或流量速率超過 速限。
未驗證 JWT 權杖無效,導致要求驗證失敗。這個 發生錯誤時,可能是因為在簽署 JWT 權杖時並未提供行程 ID;或 系統就會刪除金鑰