هر زمان که وضعیت یک حصار تغییر کند، برنامه شما یک فراخوانی توسط PendingIntent دریافت میکند. برنامه شما باید هر حصار را قبل از استفاده ثبت کند.
ثبت نرده
برای ثبت یک حصار، از FenceClient و برای ساخت یک FenceUpdateRequest از FenceClient.updateFences() استفاده کنید. برای اضافه کردن هر حصار، تابع addFence() را فراخوانی کنید.
برای ثبت و لغو ثبت حصار، موارد زیر لازم است:
- یک نمونه کلاینت API سرویسهای گوگل پلی .
- یک نمونه
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 برای همه فراخوانیهای حصار استفاده کنید. اگر از یک کلید حصار که قبلاً برای فراخوانی 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);
}
});
مرحله بعدی: مدیریت فراخوانیهای حصار (fences callbacks ).