רישום גדר

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

השלב הבא: ניהול של התקשרות חזרה (callback) לגדר וירטואלי.