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