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

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

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