फ़ेंस रजिस्टर करना

जब भी किसी फ़ेंस की स्थिति बदलती है, तो आपके ऐप्लिकेशन को PendingIntent के ज़रिए कॉलबैक मिलता है. आपके ऐप्लिकेशन को हर फ़ेंस को रजिस्टर करना होगा, ताकि उसका इस्तेमाल किया जा सके.

फ़ेंस रजिस्टर करना

किसी फ़ेंस को रजिस्टर करने के लिए, FenceClient, का इस्तेमाल करें. साथ ही, FenceUpdateRequest, बनाने के लिए, FenceClient.updateFences()का इस्तेमाल करें. जोड़ने के लिए, हर फ़ेंस के लिए addFence() को कॉल करें.

किसी फ़ेंस को रजिस्टर करने और उसे अपंजीकृत करने के लिए, इनकी ज़रूरत होती है:

  • Google Play services API क्लाइंट का इंस्टेंस.
  • 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);
         }
     });

अगला चरण: फ़ेंस कॉलबैक मैनेज करना.