טיפול בשגיאות 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.