טיפול בשגיאות 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 Console.
  • אסימון ה-JWT חסר או לא חוקי.
  • אסימון ה-JWT חתום עם מזהה נסיעה שלא תואם לנסיעה המבוקשת.
RESOURCE_EXHAUSTED מכסת המשאבים עומדת על אפס או שקצב זרימת התנועה חורג ממגבלת המהירות.
לא מאומת האימות של הבקשה נכשל בגלל אסימון JWT לא חוקי. השגיאה הזו מתרחשת כשחותמים על אסימון ה-JWT ללא מזהה נסיעה, או כשפג התוקף של אסימון ה-JWT.