Gdy zmieni się stan ogrodzenia, Twoja aplikacja otrzyma wywołanie zwrotne przez PendingIntent. Zanim będzie można użyć ogrodzenia, aplikacja musi je zarejestrować.
Rejestrowanie ogrodzenia
Aby zarejestrować ogrodzenie, użyj
FenceClient,
a aby utworzyć FenceUpdateRequest,
użyj FenceClient.updateFences().
Wywołaj addFence() dla każdego ogrodzenia, które chcesz dodać.
Aby zarejestrować i wyrejestrować ogrodzenie, musisz mieć:
- instancję klienta interfejsu API usług Google Play ;
- instancję
AwarenessFence, czyli samego ogrodzenia; PendingIntentdo obsługi zmian stanu;- klucz ogrodzenia, czyli ciąg znaków, który identyfikuje ogrodzenie i jest powiązany z parą
AwarenessFence-PendingIntent.
Poniższy przykład kodu pokazuje metodę, która wywołuje updateFences() w celu zarejestrowania ogrodzenia:
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);
}
});
Aby utworzyć kilka ogrodzeń z unikalnymi kluczami, wywołaj addFence() kilka razy. Możesz użyć dowolnej liczby metod PendingIntent, ale lepiej jest używać jednego PendingIntent do wszystkich wywołań zwrotnych ogrodzenia. Jeśli użyjesz klucza ogrodzenia, który został już zarejestrowany, aby wywołać addFence(), wartości AwarenessFence i PendingIntent zostaną zastąpione dla tego klucza.
Wyrejestrowywanie ogrodzenia
Aby wyrejestrować ogrodzenie, wywołaj
getFenceClient().updateFences(),
i użyj FenceUpdateRequest.Builder()
do utworzenia żądania aktualizacji ogrodzenia. Następnie wywołaj removeFence(), jak pokazano w tym przykładzie:
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);
}
});
Następny krok: zarządzanie wywołaniami zwrotnymi ogrodzenia.