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

जब भी फ़ेंस की स्थिति बदलती है, तब आपके ऐप्लिकेशन को 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);
         }
     });

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