Zaun registrieren

Ihre App erhält von PendingIntent einen Callback, wenn sich der Status eines Fence ä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 Zaun auf, den Sie hinzufügen möchten.

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

  • Eine Google Play Services API-Client-Instanz.
  • Eine AwarenessFence-Instanz, die den Fence selbst darstellt.
  • Eine PendingIntent zur Verarbeitung von Statusänderungen.
  • Ein Fence-Schlüssel, der ein String ist, 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 beliebig viele PendingIntent-Methoden verwenden, es ist jedoch besser, 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 Geofence aufheben

Rufen Sie getFenceClient().updateFences() auf, um einen Geofence zu deregistrieren, und verwenden Sie FenceUpdateRequest.Builder(), um eine Geofence-Aktualisierungsanfrage 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.