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.
Fence registrieren
Verwenden Sie zum Registrieren eines Geofence die FenceClient und zum Erstellen eines FenceUpdateRequest die FenceClient.updateFences().
Rufen Sie addFence() für jeden hinzuzufügenden Zaun auf.
Für die Registrierung und Abmeldung eines Fence ist Folgendes erforderlich:
- Eine Google Play-Dienste API-Clientinstanz.
- Eine
AwarenessFence-Instanz, die die Begrenzung selbst darstellt. - Ein
PendingIntentzur Verarbeitung von Statusänderungen. - Ein Fence-Schlüssel, d. h. ein String, der 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 Geofences mit eindeutigen Geofence-Schlüsseln erstellen möchten, rufen Sie addFence() mehrmals auf. Du kannst so viele PendingIntent-Methoden verwenden, wie du benötigst. Es ist jedoch besser, eine einzige PendingIntent-Methode 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 Fence aufheben
Wenn Sie die Registrierung eines Fence aufheben möchten, rufen Sie getFenceClient().updateFences() auf und verwenden Sie FenceUpdateRequest.Builder(), um eine Anfrage zur Aktualisierung des Fence 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