處理消費者 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 | 消費者應用程式權限不足。發生這個錯誤的原因包括:
|
RESOURCE_EXHAUSTED | 資源配額為零或流量速率超過 速限。 |
未驗證 | JWT 權杖無效,導致要求驗證失敗。這個 發生錯誤時,可能是因為在簽署 JWT 權杖時並未提供行程 ID;或 系統就會刪除金鑰 |