האפליקציה מקבלת קריאה חוזרת (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);
}
});