التعامل مع أخطاء حِزم تطوير البرامج (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. وحدة التحكم.
  • رمز JWT المميز إما مفقود أو غير صالح.
  • يتم توقيع رمز JWT باستخدام معرّف رحلة لا يتطابق مع طلب الرحلة.
RESOURCE_EXHAUSTED تصبح حصة الموارد صفرًا، أو أن معدل تدفق الزيارات يتجاوز حد السرعة.
غير مصدَّق عليها تعذّرت مصادقة الطلب بسبب رمز JWT المميز غير الصالح. هذا النمط عندما يتم توقيع رمز JWT المميز بدون معرّف الرحلة عندما تنتهي صلاحية رمز JWT المميز.