Gérer les erreurs du SDK client

Le SDK grand public envoie les erreurs de mise à jour du trajet à l'application grand public à l'aide d'un rappel. sur le mécanisme d'attention. 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 aussi et d'en extraire des informations supplémentaires sous la forme d'un code d'état. Pour le la liste complète des codes d'état, reportez-vous à 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. 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. 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

Le 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

Le 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 erreurs côté client.

Erreurs de serveur et de réseau

Les codes d'état suivants correspondent à des erreurs de réseau ou de serveur, et vous aucune action n'est requise de votre part pour les résoudre. Consumer SDK automatiquement s'en remet.

Code d'étatDescription
ABORTED Le serveur a cessé d'envoyer la réponse. Cela est généralement dû à de serveur.
ANNULÉ Le serveur a interrompu la réponse sortante. Normalement, se produit lorsque
l'application est envoyée en arrière-plan ou en cas de changement d'état
Application grand public.
INTERRUPTED
DEADLINE_EXCEEDED Le serveur a mis trop de temps à répondre.
UNAVAILABLE Le serveur était indisponible. Cela est généralement dû à un réseau problème.

Erreurs client

Les codes d'état suivants correspondent aux erreurs du client. Vous devez prendre des mesures pour les résoudre. Le SDK grand public continue d'actualiser le trajet jusqu'à ce que vous partager le parcours, mais il ne se rétablira pas tant que vous n’aurez pas pris de mesure.

Code d'étatDescription
INVALID_ARGUMENT L'application pour les consommateurs a spécifié un nom de trajet non valide. Le nom du trajet doit respectez le format providers/{provider_id}/trips/{trip_id}.
NOT_FOUND Le voyage n'a jamais été créé.
PERMISSION_DENIED L'application grand public ne dispose pas des autorisations nécessaires. 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 Google Cloud la console Cloud.
  • Le jeton JWT est manquant ou non valide.
  • Le jeton JWT est signé avec un ID de trajet qui ne correspond pas au le trajet demandé.
RESOURCE_EXHAUSTED Le quota de ressources est égal à zéro, ou le débit du trafic dépasse le limite de vitesse.
UNAUTHENTICATED L'authentification de la requête a échoué en raison d'un jeton JWT non valide. Ce se produit lorsque le jeton JWT est signé sans ID de trajet, ou Lorsque le jeton JWT a expiré.