Zaun registrieren

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

Fence registrieren

Verwenden Sie die FenceClient, um einen Fence zu registrieren, und verwenden Sie FenceClient.updateFences(), um eine FenceUpdateRequestzu erstellen. Rufen Sie addFence() für jeden Fence auf, der hinzugefügt werden soll.

Folgendes ist erforderlich, um einen Fence zu registrieren und die Registrierung aufzuheben:

  • Eine Google Play Services API-Client instanz.
  • Eine AwarenessFence-Instanz, also der Fence selbst.
  • Ein PendingIntent zur Verarbeitung von Statusänderungen.
  • Ein Fence-Schlüssel, eine String, die den Fence identifiziert und einem AwarenessFence-PendingIntent-Paar zugeordnet ist.

Das folgende Codebeispiel zeigt eine Methode, die updateFences() aufruft, um einen Fence 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 Fences mit eindeutigen Fence-Schlüsseln erstellen möchten, rufen Sie addFence() mehrmals auf. Sie können beliebig viele PendingIntent-Methoden verwenden. Es ist jedoch besser, ein einzelnes PendingIntent für alle Fence-Callbacks zu verwenden. Wenn Sie einen bereits registrierten Fence-Schlüssel verwenden, um addFence() aufzurufen, werden die Werte für AwarenessFence und PendingIntent für diesen Schlüssel überschrieben.

Registrierung eines Fence aufheben

Rufen Sie getFenceClient().updateFences()auf, um die Registrierung eines Fence aufzuheben, und verwenden Sie FenceUpdateRequest.Builder() um eine Fence-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-Callbacks verwalten.