معالجة أخطاء حزمة تطوير البرامج (SDK) للمستهلكين

ترسل حزمة SDK للمستهلك أخطاء تحديث الرحلة إلى تطبيق المستهلك باستخدام آلية معاودة الاتصال. معلمة رد الاتصال هي نوع عرض خاص بالنظام الأساسي ( TripUpdateError على Android وNSError على iOS).

جارٍ استخراج رموز الحالة

عادةً ما تكون الأخطاء التي يتم تمريرها إلى معاودة الاتصال أخطاء gRPC، ويمكنك أيضًا استخراج معلومات إضافية منها في شكل رمز حالة. للحصول على القائمة الكاملة لرموز الحالة، راجِع رموز الحالة واستخدامها في gRPC.

Java

يمكنك استخراج رمز حالة gRPC الذي يقدم تفاصيل حول الخطأ من TripUpdateError الذي تم عرضه من onTripUpdateError().

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

Kotlin

يمكنك استخراج رمز حالة gRPC الذي يقدم تفاصيل حول الخطأ من TripUpdateError الذي تم عرضه من onTripUpdateError().

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

Swift

تم استدعاء 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
    ...
  }
}

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

تفسير رموز الحالة

تغطي رموز الحالة نوعين من الأخطاء: الأخطاء المتعلقة بالخادم والشبكة، والأخطاء من جانب العميل.

أخطاء في الخادم والشبكة

رموز الحالة التالية تتعلق بأخطاء في الشبكة أو الخادم، ولست بحاجة إلى اتخاذ أي إجراء لحلها. وتسترد حزمة SDK للمستهلك منها تلقائيًا.

رمز الحالةالوصف
تم الإلغاء توقف الخادم عن إرسال الاستجابة. يحدث هذا عادةً بسبب مشكلة في الخادم.
تم إلغاؤها أنهى الخادم الاستجابة الصادرة. ويحدث هذا عادةً عند
إرسال التطبيق إلى الخلفية أو عندما يكون هناك تغيير في الحالة في تطبيق
للمستهلكين.
متقطع
DEADLINE_EXCEEDED استغرق الخادم وقتًا طويلاً للاستجابة.
UNAVAILABLE لم يكن الخادم متاحًا. يحدث هذا عادةً بسبب مشكلة في الشبكة.

أخطاء العميل

رموز الحالة التالية تتعلق بأخطاء العميل، وعليك اتخاذ إجراء لحلها. تستمر حزمة SDK للمستهلك في إعادة محاولة تحديث الرحلة حتى إنهاء مشاركة الرحلة، ولكن لن يتم استردادها ما لم تتخذ إجراءً بشأن ذلك.

رمز الحالةالوصف
INVALID_ARGUMENT حدّد تطبيق المستهلك اسم رحلة غير صالح، ويجب أن يكون اسم الرحلة بالتنسيق providers/{provider_id}/trips/{trip_id}.
NOT_FOUND لم يتم إنشاء الرحلة مطلقًا.
PERMISSION_DENIED لا تتوفّر لدى تطبيق المستهلك أذونات كافية. يحدث هذا الخطأ في الحالات التالية:
  • لا يحتوي تطبيق المستهلك على أذونات
  • لم يتم تفعيل حزمة تطوير البرامج (SDK) للمستهلكين للمشروع في Google Cloud Console.
  • رمز JWT مفقود أو غير صالح.
  • تم توقيع رمز JWT المميّز باستخدام رقم تعريف رحلة لا يتطابق مع الرحلة المطلوبة.
RESOURCE_EXHAUSTED إنّ حصة الموارد صفرًا أو أنّ معدّل تدفق الزيارات يتجاوز الحدّ الأقصى للسرعة.
غير مصادق تعذّر الطلب في المصادقة بسبب أنّ رمز JWT المميز غير صالح. يحدث هذا الخطأ إما عند توقيع رمز JWT المميز بدون معرّف الرحلة، أو عند انتهاء صلاحية رمز JWT المميز.