טיפול בשגיאות SDK של צרכנים

ה-SDK לצרכנים שולח שגיאות בעדכון הנסיעה לאפליקציה לצרכנים באמצעות קריאה חוזרת (callback) על מנגנוני תשומת לב. פרמטר הקריאה החוזרת (callback) הוא סוג החזרה ספציפי לפלטפורמה ( 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;
    ...
  }
}

פירוש של קודי סטטוס

קודי הסטטוס מכסים שני סוגים של שגיאות: שגיאות הקשורות לשרת ולרשת, שגיאות בצד הלקוח.

שגיאות בחיבור לשרת ולרשת

קודי המצב הבאים מיועדים לשגיאות רשת או לשגיאות שרת, אינה נדרשת בפעולה כלשהי כדי לפתור אותן. Consumer 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.