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