האפליקציה מקבלת קריאה חוזרת (callback) באמצעות 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 לכל הקריאות החוזרות של הגדר. אם משתמשים במפתח של גדר וירטואלית שכבר נרשם לקריאה של 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);
}
});