التعامل مع أخطاء حِزم تطوير البرامج (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.