خطاهای SDK مصرف کننده را مدیریت کنید

Consumer SDK خطاهای به‌روزرسانی سفر را با استفاده از مکانیزم بازگشت به تماس به برنامه مصرف‌کننده ارسال می‌کند. پارامتر برگشت به تماس یک نوع بازگشتی خاص پلتفرم است ( TripUpdateError در Android و NSError در iOS).

استخراج کدهای وضعیت

خطاهای ارسال شده به callback معمولاً خطاهای gRPC هستند و همچنین می توانید اطلاعات اضافی را در قالب یک کد وضعیت از آنها استخراج کنید. برای فهرست کامل کدهای وضعیت، کدهای وضعیت و استفاده از آنها در gRPC را ببینید.

جاوا

شما می توانید یک کد وضعیت gRPC را استخراج کنید که جزئیات مربوط به خطا را از TripUpdateError برگردانده شده از onTripUpdateError() ارائه می دهد.

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

کاتلین

شما می توانید یک کد وضعیت gRPC را استخراج کنید که جزئیات مربوط به خطا را از TripUpdateError برگردانده شده از onTripUpdateError() ارائه می دهد.

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

سریع

NSError در tripModel(_:didFailUpdateTripWithError:) دوباره فراخوانی می شود.

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

هدف-C

NSError در tripModel:didFailUpdateTripWithError: .

// 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 به طور خودکار از آنها بازیابی می شود.

کد وضعیت شرح
سقط شد سرور ارسال پاسخ را متوقف کرد. این معمولاً به دلیل مشکل سرور ایجاد می شود.
لغو شد سرور پاسخ خروجی را خاتمه داد. این معمولا زمانی اتفاق می افتد که
برنامه به پس‌زمینه ارسال می‌شود، یا زمانی که تغییر حالتی در آن وجود دارد
اپلیکیشن مصرف کننده
منقطع
DEADLINE_EXCEEDED پاسخ سرور خیلی طول کشید.
غیر قابل دسترسی سرور در دسترس نبود این معمولاً به دلیل یک مشکل شبکه ایجاد می شود.

خطاهای مشتری

کدهای وضعیت زیر مربوط به خطاهای کلاینت هستند و شما باید برای رفع آنها اقدام کنید. Consumer SDK همچنان به تلاش مجدد برای بازخوانی سفر تا پایان اشتراک‌گذاری سفر ادامه می‌دهد، اما تا زمانی که اقدامی انجام ندهید، بازیابی نمی‌شود.

کد وضعیت شرح
INVALID_ARGUMENT برنامه مصرف کننده یک نام سفر نامعتبر را مشخص کرده است. نام سفر باید از فرمت providers/{provider_id}/trips/{trip_id} پیروی کند.
پیدا نشد سفر هرگز ایجاد نشد.
PERMISSION_DENIED برنامه Consumer مجوزهای کافی ندارد. این خطا زمانی رخ می دهد که:
  • برنامه Consumer مجوز ندارد
  • Consumer SDK برای پروژه در Google Cloud Console فعال نیست.
  • رمز JWT یا گم شده یا نامعتبر است.
  • رمز JWT با یک شناسه سفر امضا شده است که با سفر درخواستی مطابقت ندارد.
RESOURCE_EXHAUSTED سهمیه منابع صفر است، یا سرعت جریان ترافیک از حد مجاز بیشتر است.
بدون احراز هویت این درخواست به دلیل یک توکن JWT نامعتبر احراز هویت نشد. این خطا یا زمانی رخ می دهد که توکن JWT بدون شناسه سفر امضا شده باشد یا زمانی که توکن JWT منقضی شده باشد.