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
PendingIntentzur 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.