处理使用方 SDK 错误

消费者 SDK 使用回调向消费者应用发送行程更新错误 机制。回调参数是平台特定的返回值类型 ( TripUpdateError 以及 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;
    ...
  }
}

解释状态代码

状态代码涵盖两种错误:与服务器和网络相关的错误,以及 错误。

服务器和网络连接错误

以下状态代码针对的是网络错误或服务器错误, 无需采取任何措施来解决这些问题。使用方 SDK 会自动 能够从中恢复

状态代码说明
ABORTED 服务器已停止发送响应。这通常是由 服务器问题。
已取消 服务器终止了外发响应。这通常 发生以下情况:
当应用被发送到后台时,或者当
消费者应用。
INTERRUPTED
DEADLINE_EXCEEDED 服务器响应时间过长。
UNAVAILABLE 服务器不可用。这通常是由网络所致 问题。

客户端错误

以下状态代码针对的是客户端错误,您必须采取措施 并加以解决。Consumer SDK 会继续重新尝试刷新行程,直到您 结束旅程分享,但在您采取行动后才能恢复。

状态代码说明
INVALID_ARGUMENT 消费者应用指定的行程名称无效;行程名称必须 遵循格式 providers/{provider_id}/trips/{trip_id}
NOT_FOUND 此行程从未创建。
PERMISSION_DENIED 消费者应用的权限不足。出现此错误的情况包括:
<ph type="x-smartling-placeholder">
    </ph>
  • 消费者应用没有权限
  • Google Cloud 中的项目未启用使用方 SDK 控制台。
  • JWT 令牌缺失或无效。
  • JWT 令牌的签名行程 ID 与 请求的行程。
RESOURCE_EXHAUSTED 资源配额为零,或者流量的速率超过 限速。
UNAUTHENTICATED 由于 JWT 令牌无效,请求未通过身份验证。这个 如果 JWT 令牌签名时不含行程 ID,则会发生错误;或者 在 JWT 令牌过期时触发。