Aby Fleet Engine działał jak najlepiej, musisz przesyłać do niego strumień aktualizacji lokalizacji pojazdu. Aby dostarczać te aktualizacje, użyj jednej z tych metod:
- Użyj pakietu Driver SDK: najprostsza opcja. Zapoznaj się z dokumentacją pakietu Driver SDK dla Android lub iOS.
- Użyj niestandardowego kodu: przydatne, jeśli lokalizacje są przekazywane przez Twój backend lub jeśli używasz urządzeń innych niż Android lub iOS. Ten przewodnik opisuje to podejście.
Jeśli nie używasz pakietu Driver SDK do aktualizowania lokalizacji pojazdu, możesz bezpośrednio wywołać Fleet Engine z lokalizacją pojazdu. W przypadku każdego aktywnego pojazdu Fleet Engine oczekuje aktualizacji lokalizacji co najmniej raz na minutę i co najwyżej raz na 5 sekund. Te aktualizacje wymagają tylko uprawnień użytkownika pakietu sterowników SDK Fleet Engine.
Przykład aktualizacji lokalizacji pojazdu
Aby zaktualizować lokalizację pojazdu, możesz użyć biblioteki Java gRPC lub REST, jak pokazano w tym przykładzie. Pełną listę obsługiwanych języków znajdziesz w artykule Biblioteki klienta do usług podróży na żądanie.
Java
static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";
VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);
String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
.setLastLocation(VehicleLocation.newBuilder()
.setSupplementalLocation(LatLng.newBuilder()
.setLatitude(37.3382)
.setLongitude(121.8863))
.setSupplementalLocationTime(now())
.setSupplementalLocationSensor(LocationSensor.CUSTOMER_SUPPLIED_LOCATION)
.setSupplementalLocationAccuracy(DoubleValue.of(15.0))) // Optional
.build();
UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
.setName(vehicleName)
.setVehicle(updatedVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("last_location"))
.build();
try {
Vehicle updatedVehicle =
vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
// Most implementations will call CreateVehicle in this case
break;
case PERMISSION_DENIED:
break;
}
return;
}
// If no Exception, Vehicle updated successfully.
REST
curl -X PUT \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=last_location" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
"supplementalLocationTime": "$(date -u --iso-8601=seconds)",
"supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
"supplementalLocationAccuracy": 15
}
EOMZapoznaj się z dokumentacją providers.vehicles.update.