Zaun registrieren

Ihre App erhält einen Callback von PendingIntent, wenn sich der Status eines Geofence ändert. Ihre App muss jeden Fence registrieren, bevor er verwendet werden kann.

Geofence registrieren

Verwenden Sie zum Registrieren eines Zauns FenceClient und zum Erstellen eines FenceUpdateRequest> FenceClient.updateFences(). Rufen Sie addFence() für jeden hinzuzufügenden Grenzbereich auf.

Für die Registrierung und Aufhebung der Registrierung eines Geofence sind folgende Voraussetzungen erforderlich:

  • Eine Google Play-Dienste API-Client-Instanz.
  • Eine AwarenessFence-Instanz, die die Begrenzung selbst ist.
  • Ein PendingIntent zur Verarbeitung von Statusänderungen.
  • Ein Fence-Schlüssel, ein String, der das Fence identifiziert und einem AwarenessFence-PendingIntent-Paar zugeordnet wird.

Das folgende Codebeispiel zeigt eine Methode, die updateFences() aufruft, um einen Zaun zu registrieren:

    Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
        .addFence(FENCE_KEY, exercisingWithHeadphonesFence, mPendingIntent)
        .build())
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Log.i(TAG, "Fence was successfully registered.");
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e(TAG, "Fence could not be registered: " + e);
            }
        });

Wenn Sie mehrere Geofences mit eindeutigen Geofence-Schlüsseln erstellen möchten, rufen Sie addFence() mehrmals auf. Sie können so viele PendingIntent-Methoden verwenden, wie Sie benötigen. Es ist jedoch vorzuziehen, eine einzelne PendingIntent für alle Fence-Callbacks zu verwenden. Wenn Sie einen bereits registrierten Fence-Schlüssel verwenden, um addFence() aufzurufen, werden die Werte AwarenessFence und PendingIntent für diesen Schlüssel überschrieben.

Registrierung eines Zauns aufheben

Wenn Sie ein Gebiet abmelden möchten, rufen Sie getFenceClient().updateFences() auf und verwenden Sie FenceUpdateRequest.Builder(), um eine Anfrage zum Aktualisieren des Gebiets zu erstellen. Rufen Sie dann removeFence() auf, wie im folgenden Beispiel gezeigt:

 Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
     .removeFence(FENCE_KEY)
     .build())
     .addOnSuccessListener(new OnSuccessListener<Void>() {
         @Override
         public void onSuccess(Void aVoid) {
             Log.i(TAG, "Fence was successfully unregistered.");
         }
     })
     .addOnFailureListener(new OnFailureListener() {
         @Override
         public void onFailure(@NonNull Exception e) {
             Log.e(TAG, "Fence could not be unregistered: " + e);
         }
     });

Nächster Schritt: Fence-Rückrufe verwalten.