Zaun registrieren

Ihre App empfängt einen Callback von PendingIntent, wenn sich der Status eines Zauns ändert. Ihre App muss jeden Zaun registrieren, bevor sie verwendet werden kann.

Zaun registrieren

Verwenden Sie zum Registrieren eines Zauns FenceClient und zum Erstellen von FenceUpdateRequest FenceClient.updateFences(). Rufen Sie addFence() für jeden Zaun auf, der hinzugefügt werden soll.

Für die Registrierung und Abmeldung eines Zauns gilt Folgendes:

  • Eine Google Play Services API-Client-Instanz.
  • Eine AwarenessFence-Instanz, die den Zaun selbst darstellt.
  • Ein PendingIntent zur Verarbeitung von Statusänderungen.
  • Ein Zaunschlüssel. Das ist ein String, der den Zaun identifiziert und einem AwarenessFence-PendingIntent-Paar zugeordnet ist.

Das folgende Codebeispiel zeigt eine Methode, die updateFences() zum Registrieren eines Zauns aufruft:

    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 Zäune mit eindeutigen Zaunschlüsseln erstellen möchten, rufen Sie addFence() mehrmals auf. Sie können so viele PendingIntent-Methoden verwenden, wie Sie möchten. Es ist jedoch besser, für alle Zaun-Callbacks eine einzelne PendingIntent zu verwenden. Wenn Sie einen Zanschlüssel verwenden, der bereits zum Aufrufen von addFence() registriert ist, werden die Werte AwarenessFence und PendingIntent für diesen Schlüssel überschrieben.

Zaun aufheben

Wenn Sie die Blockierung eines Zauns aufheben möchten, rufen Sie getFenceClient().updateFences() auf und verwenden Sie FenceUpdateRequest.Builder(), um eine Anfrage zur Aktualisierung eines Zauns 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: Rückrufe für Zaun verwalten.