Ihre App erhält einen Callback von PendingIntent
, wenn sich der Status eines Zauns ändert. Ihre App muss jeden Zaun registrieren, bevor er verwendet werden kann.
Zaun registrieren
Verwenden Sie FenceClient
, um einen Zaun zu registrieren, und FenceClient.updateFences()
, um einen FenceUpdateRequest
zu erstellen.
Rufen Sie addFence()
für jeden Zaun auf, den Sie hinzufügen möchten.
Folgendes ist erforderlich, um einen Zaun zu registrieren und abzumelden:
- Eine Instanz eines Google Play Services API-Clients.
- Eine
AwarenessFence
-Instanz, also der Zaun selbst. - Eine
PendingIntent
zum Verwalten von Statusänderungen. - Ein Zaunschlüssel, ein String, der den Zaun identifiziert und einem
AwarenessFence
-PendingIntent
-Paar zugeordnet ist.
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 Zäune mit eindeutigen Zaunschlüsseln erstellen möchten, rufen Sie addFence()
mehrmals auf. Sie können beliebig viele PendingIntent
-Methoden verwenden. Es empfiehlt sich jedoch, für alle Begrenzungs-Callbacks dieselbe PendingIntent
zu verwenden. Wenn Sie einen Zaunschlüssel verwenden, der bereits für den Aufruf von addFence()
registriert wurde, werden die Werte AwarenessFence
und PendingIntent
für diesen Schlüssel überschrieben.
Einzäunung abmelden
Wenn Sie einen Zaun abmelden möchten, rufen Sie getFenceClient().updateFences()
auf und verwenden Sie FenceUpdateRequest.Builder()
, um eine Aktualisierungsanfrage für den Zaun 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: Begrenzungs-Callbacks verwalten