Bir çitin durumu değiştiğinde uygulamanız PendingIntent
tarafından geri çağrılır. Uygulamanız, her çitin kullanılabilmesi için çiti kaydettirmelidir.
Çit kaydetme
Çit kaydetmek için FenceClient
, FenceUpdateRequest
oluşturmak için FenceClient.updateFences()
simgesini kullanın.
Eklenecek her çit için addFence()
numaralı telefonu arayın.
Çit kaydetmek ve çit kaydını kaldırmak için aşağıdakiler gereklidir:
- Bir Google Play Services API istemcisi örneği.
- Çitin kendisi olan bir
AwarenessFence
örneği. - Durum değişikliklerini işlemek için bir
PendingIntent
. - Çitin kimliğini tanımlayan ve bir
AwarenessFence
-PendingIntent
çiftiyle eşlenen bir dize olan çit anahtarı.
Aşağıdaki kod örneğinde, çit kaydetmek için updateFences()
'ü çağıran bir yöntem gösterilmektedir:
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);
}
});
Benzersiz çit anahtarlarına sahip birden fazla çit oluşturmak için addFence()
birden çok kez çağırın. İhtiyacınız olduğu kadar PendingIntent
yöntemi kullanabilirsiniz ancak tüm çit geri çağırmalarında tek bir PendingIntent
kullanılması tercih edilir. addFence()
çağrısı yapmak için önceden kaydedilmiş bir çit anahtarı kullanırsanız söz konusu anahtar için AwarenessFence
ve PendingIntent
değerlerinin üzerine yazılır.
Çit kaydını iptal etme
Bir çitin kaydını iptal etmek için getFenceClient().updateFences()
numarasını arayın ve çit güncelleme isteği oluşturmak için FenceUpdateRequest.Builder()
işlevini kullanın. Ardından, aşağıdaki örnekte gösterildiği gibi removeFence()
işlevini çağırın:
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);
}
});
Sonraki adım: Çit geri çağırmalarını yönetme.