هر زمان که وضعیت حصار تغییر کند، برنامه شما توسط PendingIntent
پاسخ تماس دریافت می کند. برنامه شما باید هر حصار را قبل از استفاده ثبت کند.
ثبت حصار
برای ثبت یک حصار، از FenceClient
و برای ساختن یک FenceUpdateRequest
، از FenceClient.updateFences()
استفاده کنید. برای افزودن هر حصار addFence()
فراخوانی کنید.
برای ثبت و لغو ثبت حصار موارد زیر لازم است:
- یک نمونه Google Play Services API Client .
- یک نمونه
AwarenessFence
، که خود حصار است. - یک
PendingIntent
برای مدیریت تغییرات حالت. - یک کلید حصار، که رشتهای است که حصار را شناسایی میکند و به یک جفت
AwarenessFence
-PendingIntent
نقشه میدهد.
مثال کد زیر روشی را نشان می دهد که updateFences()
را برای ثبت یک حصار فراخوانی می کند:
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);
}
});
برای ایجاد حصارهای متعدد با کلیدهای حصار منحصربفرد، چندین بار addFence()
را فراخوانی کنید. شما میتوانید به تعداد مورد نیاز از روشهای PendingIntent
استفاده کنید، اما ترجیحاً استفاده از یک PendingIntent
برای همه تماسهای حصاری ترجیح داده میشود. اگر از کلید fence استفاده میکنید که قبلاً برای فراخوانی addFence()
ثبت شده است، مقادیر AwarenessFence
و PendingIntent
برای آن کلید بازنویسی میشوند.
یک حصار را لغو ثبت کنید
برای لغو ثبت یک حصار، getFenceClient().updateFences()
را فراخوانی کنید و از FenceUpdateRequest.Builder()
برای ایجاد درخواست به روز رسانی حصار استفاده کنید. سپس removeFence()
فراخوانی کنید، همانطور که در مثال زیر نشان داده شده است:
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);
}
});
مرحله بعدی: مدیریت تماس های حصاری .