Abrechenbare Transaktionen

Wenn in Ihrem Vertrag mit Google die Abrechnung pro Transaktion festgelegt ist, muss Ihre App NavigationTransactionRecorder.pickup() und NavigationTransactionRecorder.dropoff() aufrufen, um den Anfang und das Ende jeder Transaktion zu markieren, damit Google abrechenbare Transaktionen verfolgen und protokollieren kann. In den Implementierungsrichtlinien auf dieser Seite finden Sie Informationen dazu, wie Sie kostenpflichtige Transaktionen zu Fahrten und Lieferungen zuordnen können.

NavigationTransactionRecorder-Objekt abrufen

Wenn Sie die Methoden pickup() und dropoff() verwenden möchten, müssen Sie zuerst eine Instanz von NavigationTransactionRecorder erstellen. Dazu rufen Sie NavigationApi.getTransactionRecorder auf, wie im folgenden Beispiel gezeigt:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Transaktion mit pickup() starten

Wenn der Fahrer einen Fahrgast abholt oder einen Artikel zur Zustellung abholt, muss Ihre Anwendung NavigationTransactionRecorder.pickup() aufrufen. Du solltest diesen Aufruf initiieren, wenn der Fahrer mit deiner App interagiert, um den Abholvorgang zu registrieren. Führe diesen Aufruf nicht als Teil des onArrival()-Callbacks aus.

Im folgenden Beispielcode wird davon ausgegangen, dass der Fahrer beim Abholen eines Passagiers oder Liefergegenstands auf eine Schaltfläche in der Benutzeroberfläche Ihrer App tippt:

Button b = (Button) findViewById(R.id.btn_pickup);
b.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    transactionRecorder.pickup(
        null /* waypoint */,
        Arrays.asList("MY_TRANSACTION_ID"));
  }
});

Übergeben Sie die folgenden Parameter an die Methode pickup():

  • Das Waypoint, an dem der Abholvorgang erfolgt, oder null, wenn der Abholvorgang nicht Teil einer vorhandenen Navigationssitzung ist.
  • Eine oder mehrere Transaktions-IDs, die für diese Abholung gelten. Eine Transaktions-ID ist ein beliebiger String, der eine kostenpflichtige Transaktion eindeutig identifiziert. Weitere Informationen zu Transaktions-IDs finden Sie unten.

Transaktion mit dropoff() beenden

Wenn der Fahrer einen Beifahrer aussteigt oder einen Gegenstand liefert, muss Ihre Anwendung NavigationTransactionRecorder.dropoff() aufrufen. Sie sollten diesen Aufruf initiieren, wenn der Fahrer mit Ihrer App interagiert, um die Abgabe zu registrieren. Führe diesen Aufruf nicht als Teil des onArrival()-Callbacks aus.

Im folgenden Beispielcode wird davon ausgegangen, dass der Fahrer beim Ausgeben eines Passagiers oder Liefergegenstands auf eine Schaltfläche in der Benutzeroberfläche Ihrer App tippt:

Waypoint waypoint = mNavigator.getCurrentRouteSegment().getDestinationWaypoint();

Button b = (Button) findViewById(R.id.btn_dropoff);
b.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    transactionRecorder.dropoff(
        waypoint,
        Arrays.asList("MY_TRANSACTION_ID"));
  }
});

Übergeben Sie die folgenden Parameter an die Methode dropoff():

  • Das Waypoint, an dem der Ausstieg erfolgt, oder null, wenn der Ausstieg nicht Teil einer vorhandenen Navigationssitzung ist.
  • Eine oder mehrere Transaktions-IDs, die für diese Drop-down-Liste gelten. Eine Transaktions-ID ist ein beliebiger String, der eine kostenpflichtige Transaktion eindeutig identifiziert. Weitere Informationen zu Transaktions-IDs finden Sie unten.

Du kannst deine eigene Transaktions-ID verwenden oder eine generieren

Die Transaktions-ID bietet eine Möglichkeit, eine Fahrt mit einer Abrechnungstransaktion von Google zu verknüpfen. Eine Transaktions-ID ist ein beliebiger String mit einer maximalen Länge von 64 Zeichen. Die ID muss transaktionsübergreifend eindeutig sein.

Es empfiehlt sich, eine eigene Transaktions-ID anzugeben, die von Ihren Systemen bereits verwendet und gespeichert wird.

Alternativ können Sie durch Aufrufen von NavigationTransactionRecorder.generateTransactionId() eine zufällige, eindeutige Transaktions-ID generieren. Speichern Sie die generierte ID, falls Ihre Organisation sie zum Abgleich von Fahrttransaktionen benötigt.

Implementierungsrichtlinien für die Navigations-Transaktionsaufzeichnung

Orientieren Sie sich an den folgenden Richtlinien, um zu bestimmen, wie abrechnungsfähige Transaktionen Fahrten und Lieferungen zugeordnet werden sollen.

Allgemeine Richtlinien:

  • Abrechenbare Transaktionen müssen immer dann gemeldet werden, wenn das Navigation SDK for Android verwendet wird. Das gilt auch für die Verwendung des Anbieters der Standortbestimmung für Straßen und auch wenn die App bei einer bestimmten Fahrt nicht im Vordergrund ausgeführt wird. Wenn Sie keine kostenpflichtigen Transaktionen mehr melden möchten, deaktivieren Sie die Navigation, indem Sie stopGuidance() aufrufen und die Ausrichtung an Straßen mit stopRequestingLocationUpdates() deaktivieren.
  • Fahrten und Lieferungen müssen als separate und unabhängige Transaktionen registriert werden, auch wenn ein Fahrer gleichzeitig die Fahrt und die Zustellung anbietet.
  • Ein- und Ausstiegsereignisse müssen sofort erfasst werden, wenn das Ereignis eintritt.

Richtlinien für Fahrten mit Fahrten:

  • Navigationssitzungen, an denen kein Fahrgast beteiligt ist, z. B. das Autofahren zu einem Abholpunkt oder das Weiterleiten eines Fahrers zu einem Ort, an dem später Abholungen gut ankommen, werden nicht als abrechenbare Transaktionen gezählt.
  • Das Ein- und Aussteigen eines Passagiers zählt als eine abrechnungsfähige Transaktion.
  • Eine Fahrt für eine Passagiergruppe, die als Gruppe abgerechnet wird, zählt als eine kostenpflichtige Transaktion. Noch genauer: Wenn der Fahrer zwei oder mehr Fahrgäste an einem Ort ein- und aussteigt und Sie sie als Gruppe in Rechnung stellen, zählt dies als eine Transaktion. Rufen Sie pickup() nur einmal und dropoff() nur einmal mit der entsprechenden Transaktions-ID auf.
  • Eine gemeinsame Fahrt für zwei separat abgerechnete Fahrgäste wird als zwei abrechenbare Transaktionen gezählt, auch wenn die Fahrgäste an denselben Orten ein- und aussteigen. Rufen Sie pickup() mit beiden Transaktions-IDs (eine für jede Transaktion) auf, wenn der Fahrer die Fahrgäste abholt, und dropoff() mit beiden Transaktions-IDs, wenn der Fahrer die Fahrgäste ausscheidet.
  • Diskretionäre Zwischenstopps zählen nicht als separate abrechenbare Transaktionen. Beispiele hierfür sind die Unterbrechung der Fahrt zur Kaffeeholung oder die Abgabe einer Mitfahrerin, die nicht separat in Rechnung gestellt wird. Rufen Sie für Zwischenstopps wie diesen nicht wie gewohnt dropoff() auf.
  • Wenn Ihre Organisation einige Fahrten indirekt und nicht zum Zeitpunkt der Fahrt in Rechnung stellt, müssen Sie diese Fahrten so behandeln, als würde die Abrechnung pro Fahrt erfolgen. Ihre Organisation kann beispielsweise ein monatliches Abomodell für unbegrenzte Fahrten anbieten. Rufe für diese Fahrten pickup() und dropoff() an.
  • Wenn Ihr Unternehmen Buslinien anbietet, bei denen Fahrgäste an bestimmten Haltestellen ein- und aussteigen können, ohne den Überblick über die Ein- und Ausstiege zu behalten, benötigen Sie eine separate Produktlizenz. Diese Arten von Busdiensten werden nicht pro Transaktion abgerechnet.
  • Wenn Ihre Organisation mietbare Dienste anbietet, bei denen Fahrgäste über einen längeren Zeitraum unbegrenzte Haltestellen ansteuern können und die alles als eine Gebühr abgerechnet wird, benötigen Sie eine separate Produktlizenz. Diese Dienste fallen nicht in die Abrechnung pro Transaktion.

Richtlinien für Liefertransaktionen:

  • Navigationssitzungen, bei denen ein Artikel nicht lieferbar ist (z. B. die Fahrt zu einem Geschäft, um Waren abzuholen), werden nicht als abrechenbare Transaktionen gezählt.
  • Das Abholen und Abgeben einer Bestellung an einem Standort zählt als eine abrechenbare Transaktion. Eine Bestellung kann mehrere physische Objekte umfassen, z. B. zwei Tüten Lebensmittel. Rufen Sie pickup() auf, wenn der Fahrer die Bestellung abholt, und dropoff(), wenn der Fahrer die Bestellung liefert.
  • Wenn ein Fahrer im Rahmen derselben Bestellung Artikel an mehreren Orten (z. B. Geschäften oder Restaurants) abholt, zählt jeder Standort als separate abrechnungsfähige Transaktion. Verwenden Sie für jeden Standort eine andere Transaktions-ID.
  • Wenn ein Fahrer Artikel für mehrere Bestellungen mehrerer Kunden am selben Ort abholt, wird jede Bestellung als separate abrechenbare Transaktion gezählt. Verwenden Sie für jede Bestellung eine andere Transaktions-ID.
  • Wenn zwei Fahrer Artikel als Teil derselben Kundenbestellung separat abholen und abgeben, wird die Lieferung jedes Fahrers als separate Transaktion gezählt, auch wenn die Artikel vom selben Standort stammen. Verwenden Sie für jeden Treiber eine andere Transaktions-ID.