Gérer les erreurs du SDK grand public

Le SDK client envoie des erreurs de mise à jour de trajet à l'application consommateur à l'aide d'un mécanisme de rappel. Le paramètre de rappel est un type renvoyé spécifique à la plate-forme (TripUpdateError sur Android et NSError sur iOS).

Extraire les codes d'état

Les erreurs transmises au rappel sont généralement des erreurs gRPC. Vous pouvez également en extraire des informations supplémentaires sous la forme d'un code d'état. Pour obtenir la liste complète des codes d'état, consultez la section Codes d'état et leur utilisation dans gRPC.

Java

Vous pouvez extraire un code d'état gRPC qui fournit des détails sur l'erreur à partir du TripUpdateError renvoyé par onTripUpdateError().

// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
  Status.Code code = error.getStatusCode();
}

Kotlin

Vous pouvez extraire un code d'état gRPC qui fournit des détails sur l'erreur à partir du TripUpdateError renvoyé par onTripUpdateError().

// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
  val code = error.getStatusCode()
}

Swift

NSError est rappelé dans 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 est rappelé dans 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;
    ...
  }
}

Interpréter les codes d'état

Les codes d'état couvrent deux types d'erreurs: les erreurs liées au serveur et au réseau, et les erreurs côté client.

Erreurs liées au serveur et au réseau

Les codes d'état suivants concernent des erreurs réseau ou serveur. Aucune action n'est requise de votre part pour les résoudre. Le SDK client les récupère automatiquement.

Status CodeDescription
ABORTED Le serveur a cessé d'envoyer la réponse. Cela est généralement dû à un problème de serveur.
CANCELLED Le serveur a mis fin à la réponse sortante. Cela se produit normalement lorsque
l'application est envoyée en arrière-plan ou en cas de changement d'état dans l'application grand public
.
INTERRUPTED
DEADLINE_EXCEEDED Le serveur a mis trop de temps à répondre.
UNAVAILABLE Le serveur n'était pas disponible. Cela est généralement dû à un problème de réseau.

Erreurs client

Les codes d'état suivants concernent les erreurs client. Vous devez prendre des mesures pour les résoudre. Le SDK Consumer continue à essayer d'actualiser le trajet jusqu'à ce que vous mettiez fin au partage de parcours, mais il ne récupérera pas tant que vous n'aurez pas pris les mesures nécessaires.

Status CodeDescription
INVALID_ARGUMENT L'application grand public a spécifié un nom de trajet non valide. Le nom du trajet doit respecter le format providers/{provider_id}/trips/{trip_id}.
NOT_FOUND Le trajet n'a jamais été créé.
PERMISSION_DENIED Les autorisations de l'appli grand public sont insuffisantes. Cette erreur se produit dans les cas suivants :
  • L'application grand public ne dispose pas des autorisations nécessaires
  • Le SDK client n'est pas activé pour le projet dans la console Google Cloud.
  • Le jeton JWT est manquant ou n'est pas valide.
  • Le jeton JWT est signé avec un ID de trajet qui ne correspond pas au trajet demandé.
RESOURCE_EXHAUSTED Le quota de ressources est égal à zéro, ou le débit du trafic dépasse la limite de vitesse.
UNAUTHENTICATED La requête a échoué à l'authentification en raison d'un jeton JWT non valide. Cette erreur se produit lorsque le jeton JWT est signé sans ID de trajet, ou lorsqu'il a expiré.