ترسل حزمة 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 المميز. |