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