जियोफ़ेंस बनाएं और उसे मॉनिटर करें

जियोफ़ेंसिंग की सुविधा, उपयोगकर्ता की मौजूदा जगह की जानकारी के साथ-साथ उसकी मौजूदा जगह की जानकारी को भी जोड़ती है उन जगहों के नज़दीक मौजूद है जहां आपकी दिलचस्पी हो सकती है. किसी रुचि का स्थान, आप उसका अक्षांश और देशांतर दर्ज करते हैं. लोकेशन के साथ एक दायरा जोड़ते हैं. अक्षांश, देशांतर, और दायरा जियोफ़ेंस को परिभाषित करते हैं. इससे दिलचस्पी वाली जगह के आस-पास का गोलाकार क्षेत्र या बाड़.

आपके पास एक से ज़्यादा चालू जियोफ़ेंस हो सकते हैं. हालांकि, हर ऐप्लिकेशन के लिए, हर डिवाइस के उपयोगकर्ता के लिए, ज़्यादा से ज़्यादा 100 जियोफ़ेंस इस्तेमाल किए जा सकते हैं. हर एक के लिए जियोफ़ेंस के बारे में, जगह की जानकारी से जुड़ी सेटिंग पर जाने और बाहर निकलने के इवेंट की जानकारी भेजी जा सकती है. इसके अलावा, जगह की जानकारी किसी इवेंट को ट्रिगर करने से पहले, जियोफ़ेंस क्षेत्र में इंतज़ार का समय या घर का समय. आपने लोगों तक पहुंचाया मुफ़्त में मिलीसेकंड में, खत्म होने की अवधि बताकर किसी भी जियोफ़ेंस की अवधि को सीमित कर सकता है. जियोफ़ेंस की समयसीमा खत्म होने पर, जगह की जानकारी देने वाली सेवा इसे अपने-आप हटा देती है.

इस लेसन में, जियोफ़ेंस को जोड़ने और हटाने का तरीका बताया गया है. साथ ही, जियोफ़ेंस ट्रांज़िशन को सुनने का तरीका भी बताया गया है BroadcastReceiver का इस्तेमाल करके.

ध्यान दें: Wear डिवाइसों पर, जियोफ़ेंसिंग एपीआई, पावर. हम Wear पर इन एपीआई का सुझाव नहीं देते. मैसेज पढ़ा गया ज़्यादा जानकारी के लिए पावर और बैटरी बचाएं.

जियोफ़ेंस मॉनिटरिंग के लिए सेट अप करें

जियोफ़ेंस मॉनिटर करने के लिए, सबसे पहले ज़रूरी अनुमतियां दी हैं. जियोफ़ेंसिंग का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन को इन चीज़ों का अनुरोध करना होगा:

  • ACCESS_FINE_LOCATION
  • ACCESS_BACKGROUND_LOCATION अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अगर आपका ऐप्लिकेशन Android 10 (एपीआई लेवल 29) या उसके बाद वाले वर्शन को टारगेट करता है

ज़्यादा जानने के लिए, जगह की जानकारी की अनुमतियों का अनुरोध करना होगा.

अगर जियोफ़ेंस ट्रांज़िशन को सुनने के लिए BroadcastReceiver का इस्तेमाल करना है, सेवा के नाम के बारे में बताने वाला एलिमेंट जोड़ें. इस एलिमेंट को <application> एलिमेंट का चाइल्ड:

<application
   android:allowBackup="true">
   ...
   <receiver android:name=".GeofenceBroadcastReceiver"/>
<application/>

लोकेशन एपीआई को ऐक्सेस करने के लिए, आपको ऐसा इंस्टेंस बनाना होगा जियोफ़ेंसिंग क्लाइंट. अपने क्लाइंट से कनेक्ट करने का तरीका जानने के लिए:

Kotlin

lateinit var geofencingClient: GeofencingClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this)
}

Java

private GeofencingClient geofencingClient;

@Override
public void onCreate(Bundle savedInstanceState) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this);
}

जियोफ़ेंस बनाएं और जोड़ें

आपके ऐप्लिकेशन को इन कामों के लिए, लोकेशन एपीआई के बिल्डर क्लास का इस्तेमाल करके जियोफ़ेंस बनाना और जोड़ना होगा जियोफ़ेंस ऑब्जेक्ट बनाए जा सकते हैं. साथ ही, उन्हें जोड़ने के लिए सुविधा क्लास भी बनाई जा सकती है. साथ ही, जियोफ़ेंस ट्रांज़िशन होने पर, जगह की जानकारी से जुड़ी सेवाओं से भेजे गए इंटेंट, PendingIntent, जैसा कि इस सेक्शन में दिखाया गया है.

ध्यान दें: एक उपयोगकर्ता वाले डिवाइसों पर, हर ऐप्लिकेशन के लिए ज़्यादा से ज़्यादा 100 जियोफ़ेंस बनाए जा सकते हैं. कई उपयोगकर्ताओं वाले डिवाइसों के लिए, हर ऐप्लिकेशन के हर उपयोगकर्ता के लिए यह सीमा 100 जियोफ़ेंस है.

जियोफ़ेंस ऑब्जेक्ट बनाएं

सबसे पहले, Geofence.Builder का इस्तेमाल करके जियोफ़ेंस बनाएं. इसके लिए, अपनी पसंद का दायरा, अवधि, और जियोफ़ेंस के लिए ट्रांज़िशन टाइप. उदाहरण के लिए, किसी लिस्ट ऑब्जेक्ट को पॉप्युलेट करने के लिए:

Kotlin

geofenceList.add(Geofence.Builder()
        // Set the request ID of the geofence. This is a string to identify this
        // geofence.
        .setRequestId(entry.key)

        // Set the circular region of this geofence.
        .setCircularRegion(
                entry.value.latitude,
                entry.value.longitude,
                Constants.GEOFENCE_RADIUS_IN_METERS
        )

        // Set the expiration duration of the geofence. This geofence gets automatically
        // removed after this period of time.
        .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)

        // Set the transition types of interest. Alerts are only generated for these
        // transition. We track entry and exit transitions in this sample.
        .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)

        // Create the geofence.
        .build())

Java

geofenceList.add(new Geofence.Builder()
    // Set the request ID of the geofence. This is a string to identify this
    // geofence.
    .setRequestId(entry.getKey())

    .setCircularRegion(
            entry.getValue().latitude,
            entry.getValue().longitude,
            Constants.GEOFENCE_RADIUS_IN_METERS
    )
    .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
            Geofence.GEOFENCE_TRANSITION_EXIT)
    .build());

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

जियोफ़ेंस और शुरुआती ट्रिगर तय करना

नीचे दिया गया स्निपेट GeofencingRequest क्लास का इस्तेमाल करता है और इसके नेस्ट किए गए GeofencingRequestBuilder क्लास को मॉनिटर करने और यह सेट करने के लिए कि मिलते-जुलते जियोफ़ेंस इवेंट कैसे ट्रिगर हों, जियोफ़ेंस तय करें:

Kotlin

private fun getGeofencingRequest(): GeofencingRequest {
    return GeofencingRequest.Builder().apply {
        setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
        addGeofences(geofenceList)
    }.build()
}

Java

private GeofencingRequest getGeofencingRequest() {
    GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
    builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
    builder.addGeofences(geofenceList);
    return builder.build();
}

इस उदाहरण में दो जियोफ़ेंस ट्रिगर का इस्तेमाल दिखाया गया है. GEOFENCE_TRANSITION_ENTER किसी डिवाइस के जियोफ़ेंस में आने पर ट्रांज़िशन ट्रिगर होता है और GEOFENCE_TRANSITION_EXIT किसी डिवाइस के जियोफ़ेंस से बाहर निकलने पर ट्रांज़िशन ट्रिगर होता है. तय किया जा रहा है INITIAL_TRIGGER_ENTER, जगह की जानकारी को यह जानकारी देता है GEOFENCE_TRANSITION_ENTER अगर डिवाइस पहले से ही जियोफ़ेंस में है, तो ट्रिगर होना चाहिए.

कई मामलों में, इसके बजाय INITIAL_TRIGGER_DWELL, यह इवेंट को सिर्फ़ तब ट्रिगर करता है, जब उपयोगकर्ता किसी जियोफ़ेंस में तय समय के लिए रुकता है. इस तरीके से, "स्पैम की चेतावनी" को कम किया जा सकता है बड़ी संख्या में मिलने वाली सूचनाओं की वजह से, डिवाइस थोड़ी देर के लिए जियोफ़ेंस में शामिल होता और उससे बाहर निकल जाता है. अपने विज्ञापनों से सबसे अच्छे नतीजे पाने के लिए एक और रणनीति जियोफ़ेंस का मतलब है, कम से कम 100 मीटर का दायरा सेट करना. इससे जगह की सटीक जानकारी का पता लगाने में मदद मिलती है के वाई-फ़ाई नेटवर्क की ज़रूरत होती है. साथ ही, इससे डिवाइस में बिजली की खपत कम होती है.

जियोफ़ेंस ट्रांज़िशन के लिए ब्रॉडकास्ट रिसीवर तय करें

जगह की जानकारी से भेजा गया Intent, इनमें अलग-अलग कार्रवाइयों को ट्रिगर कर सकता है नहीं करना चाहिए, लेकिन आपको गतिविधि या फ़्रैगमेंट शुरू नहीं करना चाहिए, क्योंकि कॉम्पोनेंट सिर्फ़ उपयोगकर्ता की कार्रवाई के जवाब में दिखना चाहिए. कई मामलों में, जियोफ़ेंस ट्रांज़िशन के लिए BroadcastReceiver एक अच्छा तरीका है. ऐप्लिकेशन कोई इवेंट होने पर BroadcastReceiver को अपडेट मिलते हैं, जैसे कि जियोफ़ेंस में बदलें या उससे बाहर निकलें. साथ ही, लंबे समय तक चलने वाला बैकग्राउंड शुरू कर सकता है काम.

यहां दिए गए स्निपेट में, BroadcastReceiver को शुरू करने वाले PendingIntent के बारे में बताने के लिए:

Kotlin

class MainActivity : AppCompatActivity() {

    // ...

    private val geofencePendingIntent: PendingIntent by lazy {
        val intent = Intent(this, GeofenceBroadcastReceiver::class.java)
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling
        // addGeofences() and removeGeofences().
        PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
    }
}

Java

public class MainActivity extends AppCompatActivity {

    // ...

    private PendingIntent getGeofencePendingIntent() {
        // Reuse the PendingIntent if we already have it.
        if (geofencePendingIntent != null) {
            return geofencePendingIntent;
        }
        Intent intent = new Intent(this, GeofenceBroadcastReceiver.class);
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when
        // calling addGeofences() and removeGeofences().
        geofencePendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.
                FLAG_UPDATE_CURRENT);
        return geofencePendingIntent;
    }

जियोफ़ेंस जोड़ें

जियोफ़ेंस जोड़ने के लिए, GeofencingClient.addGeofences() तरीके का इस्तेमाल करें. GeofencingRequest ऑब्जेक्ट और PendingIntent सबमिट करें. नीचे दिए गए स्निपेट में, नतीजों को प्रोसेस करने के बारे में बताया गया है:

Kotlin

geofencingClient?.addGeofences(getGeofencingRequest(), geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences added
        // ...
    }
    addOnFailureListener {
        // Failed to add geofences
        // ...
    }
}

Java

geofencingClient.addGeofences(getGeofencingRequest(), getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences added
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to add geofences
                // ...
            }
        });

जियोफ़ेंस ट्रांज़िशन मैनेज करना

जब जगह की जानकारी को किसी उपयोगकर्ता के जियोफ़ेंस में जाने या उससे बाहर निकलने का पता चलता है, PendingIntent में मौजूद Intent को भेजता है आपने जियोफ़ेंस जोड़ने के अनुरोध में शामिल किया हो. ब्रॉडकास्ट रिसीवर में बदलाव करने वाले GeofenceBroadcastReceiver ने सूचना दी कि Intent शुरू कर दिया गया है और इसके बाद, इंटेंट से जियोफ़ेंसिंग इवेंट पा सकते हैं और जियोफ़ेंस ट्रांज़िशन के टाइप का पता लगा सकते हैं. और यह पता लगाया जा सकता है कि कौनसा जियोफ़ेंस ट्रिगर हुआ. ब्रॉडकास्ट वह व्यक्ति किसी ऐप्लिकेशन को बैकग्राउंड में काम करने के लिए निर्देश दे सकता है. अगर ऐसा नहीं है, तो तो आउटपुट के रूप में सूचना भेजें.

ध्यान दें: Android 8.0 (एपीआई लेवल 26) और इसके बाद के वर्शन वाले डिवाइसों पर, अगर कोई ऐप्लिकेशन जियोफ़ेंस को मॉनिटर करते हुए बैकग्राउंड में चल रहा है और उसके बाद डिवाइस हर दो मिनट में जियोफ़ेंसिंग इवेंट का जवाब देती है. बदलाव करने का तरीका जानने के लिए आपका ऐप्लिकेशन इन प्रतिक्रिया सीमाओं तक पहुंच सकता है, तो बैकग्राउंड जगह की जानकारी की सीमाएं.

नीचे दिया गया स्निपेट आपको BroadcastReceiver अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है जो जियोफ़ेंस ट्रांज़िशन होने पर सूचना पोस्ट करती है. जब उपयोगकर्ता सूचना पर क्लिक करने पर, ऐप्लिकेशन की मुख्य गतिविधि दिखेगी:

Kotlin

class GeofenceBroadcastReceiver : BroadcastReceiver() {
    // ...
    override fun onReceive(context: Context?, intent: Intent?) {
        val geofencingEvent = GeofencingEvent.fromIntent(intent)
        if (geofencingEvent.hasError()) {
            val errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(geofencingEvent.errorCode)
            Log.e(TAG, errorMessage)
            return
        }

        // Get the transition type.
        val geofenceTransition = geofencingEvent.geofenceTransition

        // Test that the reported transition was of interest.
        if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER |
                geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {

            // Get the geofences that were triggered. A single event can trigger
            // multiple geofences.
            val triggeringGeofences = geofencingEvent.triggeringGeofences

            // Get the transition details as a String.
            val geofenceTransitionDetails = getGeofenceTransitionDetails(
                    this,
                    geofenceTransition,
                    triggeringGeofences
            )

            // Send notification and log the transition details.
            sendNotification(geofenceTransitionDetails)
            Log.i(TAG, geofenceTransitionDetails)
        } else {
            // Log the error.
            Log.e(TAG, getString(R.string.geofence_transition_invalid_type,
                    geofenceTransition))
        }
    }
}

Java

public class GeofenceBroadcastReceiver extends BroadcastReceiver {
    // ...
    protected void onReceive(Context context, Intent intent) {
        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
        if (geofencingEvent.hasError()) {
            String errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(geofencingEvent.getErrorCode());
            Log.e(TAG, errorMessage);
            return;
        }

        // Get the transition type.
        int geofenceTransition = geofencingEvent.getGeofenceTransition();

        // Test that the reported transition was of interest.
        if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER ||
                geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {

            // Get the geofences that were triggered. A single event can trigger
            // multiple geofences.
            List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences();

            // Get the transition details as a String.
            String geofenceTransitionDetails = getGeofenceTransitionDetails(
                    this,
                    geofenceTransition,
                    triggeringGeofences
            );

            // Send notification and log the transition details.
            sendNotification(geofenceTransitionDetails);
            Log.i(TAG, geofenceTransitionDetails);
        } else {
            // Log the error.
            Log.e(TAG, getString(R.string.geofence_transition_invalid_type,
                    geofenceTransition));
        }
    }
}

PendingIntent के ज़रिए ट्रांज़िशन इवेंट का पता लगाने के बाद, BroadcastReceiver को जियोफ़ेंस ट्रांज़िशन टाइप मिलता है और जांचता है कि क्या वह उन इवेंट में से एक है जिसका इस्तेमाल ऐप्लिकेशन, नोटिफ़िकेशन -- या तो GEOFENCE_TRANSITION_ENTER या GEOFENCE_TRANSITION_EXIT मामले में शामिल है. इसके बाद, सेवा देने वाली कंपनी एक सूचना भेजती है और ट्रांज़िशन की जानकारी लॉग करती है.

जियोफ़ेंस मॉनिटरिंग बंद करें

ज़रूरत न होने या ज़रूरत न होने पर, जियोफ़ेंस मॉनिटरिंग को बंद करके बैटरी की बचत की जा सकती है डिवाइस के पावर और सीपीयू साइकल की वजह से. आपके पास जियोफ़ेंस मॉनिटरिंग को बंद करने का विकल्प है जियोफ़ेंस जोड़ने और हटाने के लिए इस्तेमाल की जाने वाली मुख्य गतिविधि में; जियोफ़ेंस हटाने से वह रुक जाता है तुरंत. एपीआई, इन कामों के लिए तरीके उपलब्ध कराता है अनुरोध आईडी के ज़रिए या दिए गए जियोफ़ेंस को हटाकर जियोफ़ेंस हटाना PendingIntent.

यह स्निपेट PendingIntent से जियोफ़ेंस हटाता है और सभी को रोक देता है डिवाइस के पहले से जोड़े गए जियोफ़ेंस में जाने या उससे बाहर निकलने पर, अतिरिक्त सूचना पाने के लिए:

Kotlin

geofencingClient?.removeGeofences(geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences removed
        // ...
    }
    addOnFailureListener {
        // Failed to remove geofences
        // ...
    }
}

Java

geofencingClient.removeGeofences(getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences removed
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to remove geofences
                // ...
            }
        });

जियोफ़ेंसिंग को जगह की जानकारी से जुड़ी दूसरी सुविधाओं के साथ जोड़ा जा सकता है. जैसे, समय-समय पर जगह की जानकारी अपडेट करना. ज़्यादा जानकारी के लिए, इस क्लास के अन्य लेसन देखें.

जियोफ़ेंसिंग के लिए सबसे सही तरीके इस्तेमाल करें

इस सेक्शन में, जगह की जानकारी के साथ जियोफ़ेंसिंग का इस्तेमाल करने के सुझाव दिए गए हैं Android के लिए एपीआई.

बिजली की खपत कम करें

जियोफ़ेंसिंग का इस्तेमाल करने वाले ऐप्लिकेशन में बिजली की खपत को ऑप्टिमाइज़ करने के लिए, इन तकनीकों का इस्तेमाल करें:

  • सेट करें सूचना का रिस्पॉन्स मिलने में लगने वाला समय ज़्यादा हो. ऐसा करने पर ऊर्जा की खपत बेहतर होगी जियोफ़ेंस अलर्ट की इंतज़ार के समय को बढ़ाया जा रहा है. उदाहरण के लिए, अगर आपने रिस्पॉन्सिवनेस (स्क्रीन के हिसाब से साइज़ बदलने वाली सेटिंग) वैल्यू पांच पर सेट की है ये मिनट, आपका ऐप्लिकेशन हर पांच मिनट में सिर्फ़ एक बार, आपके कारोबार के अंदर जाने या बाहर निकलने की सूचना की जांच करता है. कम वैल्यू सेट करने का मतलब यह नहीं है कि उपयोगकर्ताओं को उस समयावधि के दौरान सूचना दे दी जाएगी (उदाहरण के लिए, अगर आपने 5 सेकंड की वैल्यू सेट की है, तो सूचना).

  • उन जगहों के लिए बड़े जियोफ़ेंस दायरे का इस्तेमाल करें जहां उपयोगकर्ता ज़्यादा समय बिताता है, जैसे कि घर या ऑफ़िस. दायरा बड़ा करने से बिजली की खपत सीधे तौर पर कम नहीं होती, लेकिन यह कम हो जाती है ऐप्लिकेशन में एंट्रेंस या एग्ज़िट का समय जांचने की फ़्रीक्वेंसी से यह तय होता है कि ऐप्लिकेशन में कितनी पावर सप्लाई की जाती है इस्तेमाल.

अपने जियोफ़ेंस के लिए सबसे सही दायरा चुनें

बेहतर नतीजों के लिए, जियोफ़ेंस का कम से कम दायरा 100 - 150 मीटर के बीच सेट किया जाना चाहिए. वाई-फ़ाई उपलब्ध होने पर, जगह की सटीक जानकारी आम तौर पर 20 से 50 मीटर के बीच होती है. घर के अंदर होने पर जगह की जानकारी उपलब्ध है. सटीक दूरी की सीमा 5 मीटर जितनी कम हो सकती है. जब तक आपको घर के अंदर की जानकारी न हो जियोफ़ेंस में जगह की जानकारी उपलब्ध है. मान लें कि वाई-फ़ाई से जगह की सटीक जानकारी 50 मीटर.

जब वाई-फ़ाई स्थान उपलब्ध न हो (उदाहरण के लिए, जब आप ग्रामीण क्षेत्रों में ड्राइव कर रहे हों) जगह की सटीक जानकारी कम हो जाती है. सटीक होने की रेंज, कई किलोमीटर. इस तरह के मामलों में, आपको बड़े दायरे का इस्तेमाल करके जियोफ़ेंस बनाना चाहिए.

उपयोगकर्ताओं को बताएं कि आपका ऐप्लिकेशन, जियोफ़ेंसिंग का इस्तेमाल क्यों करता है

जियोफ़ेंसिंग का इस्तेमाल करने पर, आपका ऐप्लिकेशन बैकग्राउंड में जगह की जानकारी को ऐक्सेस करता है. इस बारे में सोचें कि आपका ऐप्लिकेशन लोगों को किस तरह के फ़ायदे उपलब्ध कराएगा. उन्हें इसकी वजह साफ़ तौर पर बताएं आपके ऐप्लिकेशन को इस ऐक्सेस की ज़रूरत है, ताकि लोगों को समझने और पारदर्शिता बढ़ाने में मदद मिल सके.

जगह की जानकारी को ऐक्सेस करने के सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, साथ ही, जियोफ़ेंसिंग के बारे में जानें. इसके अलावा, निजता की सेटिंग के सबसे सही तरीके पेज पर बताया गया है.

स्पैम की चेतावनी को कम करने के लिए, ड्वेल ट्रांज़िशन टाइप का इस्तेमाल करें

अगर आपको कुछ देर के लिए जियोफ़ेंस के पास से गुज़रते समय बहुत ज़्यादा अलर्ट मिलते हैं, तो चेतावनियों को कम करें. इसके लिए, GEOFENCE_TRANSITION_ENTER के बजाय GEOFENCE_TRANSITION_DWELL ट्रांज़िशन टाइप का इस्तेमाल करें. इस तरह, घर से जुड़ी सूचना सिर्फ़ तब भेजी जाती है, जब कोई उपयोगकर्ता जियोफ़ेंस में रखें. अवधि चुनने के लिए, चलने में देरी हो सकती है.

ज़रूरत पड़ने पर ही जियोफ़ेंस को फिर से रजिस्टर करें

रजिस्टर की गई जियोफ़ेंस, इसके मालिकाना हक वाली com.google.process.location प्रोसेस में रखी जाती हैं com.google.android.gms पैकेज. ऐप्लिकेशन को नीचे दिए गए इवेंट मैनेज करने के लिए कुछ भी करने की ज़रूरत नहीं है, क्योंकि सिस्टम को इन इवेंट के बाद जियोफ़ेंस को पहले जैसा करता है:

  • Google Play services को अपग्रेड कर दिया गया है.
  • संसाधनों पर पाबंदी लगाने की वजह से, सिस्टम बंद होने के बाद Google Play services को बंद कर देता है.
  • जगह की जानकारी की प्रोसेस क्रैश हो जाती है.

अगर इन इवेंट के बाद भी जियोफ़ेंस की ज़रूरत पड़ती है, तो ऐप्लिकेशन को उसे फिर से रजिस्टर करना होगा. ऐसा इसलिए, क्योंकि सिस्टम जियोफ़ेंस को नीचे दिए गए मामलों में रिकवर नहीं कर सकता:

  • डिवाइस को फिर से चालू किया गया. ऐप्लिकेशन को डिवाइस के बूट होने की पूरी कार्रवाई को सुनना चाहिए, और उसके बाद फिर से शुरू करना चाहिए ज़रूरी जियोफ़ेंस रजिस्टर करें.
  • ऐप्लिकेशन को अनइंस्टॉल करके, फिर से इंस्टॉल किया गया हो.
  • ऐप्लिकेशन का डेटा मिटा दिया जाएगा.
  • Google Play services का डेटा मिटा दिया गया है.
  • ऐप्लिकेशन को GEOFENCE_NOT_AVAILABLE मिला है सूचना. आम तौर पर, ऐसा होता है NLP (Android की नेटवर्क लोकेशन प्रोवाइडर) के बंद होने के बाद.

जियोफ़ेंस के एंट्रेंस इवेंट से जुड़ी समस्या हल करना

अगर डिवाइस के जियोफ़ेंस में आने पर जियोफ़ेंस ट्रिगर नहीं हो रहे हैं, तो ( GEOFENCE_TRANSITION_ENTER अलर्ट ट्रिगर नहीं होता है). सबसे पहले पक्का करें कि आपके जियोफ़ेंस इस गाइड में बताए गए तरीके से खुद को रजिस्टर किया जा सकता है.

यहां चेतावनियों के उम्मीद के मुताबिक काम न करने की कुछ संभावित वजहें बताई गई हैं:

  • आपके जियोफ़ेंस में जगह की सटीक जानकारी उपलब्ध नहीं है या जियोफ़ेंस भी उसमें मौजूद है छोटा. ज़्यादातर डिवाइसों पर, जियोफ़ेंस सेवा, जियोफ़ेंस के लिए सिर्फ़ नेटवर्क की जगह की जानकारी का इस्तेमाल करती है ट्रिगर कर रहा है. यह सेवा इस तरीके का इस्तेमाल करती है, क्योंकि नेटवर्क की जगह की जानकारी कम खपत करती है अलग-अलग जगहों पर जाने में कम समय लगता है और सबसे ज़्यादा ज़रूरी है कि यह घर के अंदर हो.
  • डिवाइस पर वाई-फ़ाई बंद है. वाई-फ़ाई चालू होने से इसलिए, हो सकता है कि वाई-फ़ाई बंद होने पर, ऐप्लिकेशन को कभी भी जियोफ़ेंस अलर्ट न मिले यह कई सेटिंग के हिसाब से तय होता है. इनमें जियोफ़ेंस का दायरा, डिवाइस का मॉडल या Android वर्शन. हमने Android 4.3 (एपीआई लेवल 18) के बाद के वर्शन में, “वाई-फ़ाई स्कैन” की सुविधा जोड़ी है 'सिर्फ़ मोड” पर टैप करें. इससे उपयोगकर्ता वाई-फ़ाई बंद कर सकते हैं, लेकिन नेटवर्क की जगह की जानकारी बेहतर तरीके से मिल सकती है. यह अच्छा है उपयोगकर्ता को प्रॉम्प्ट दें और उसे सिर्फ़ वाई-फ़ाई या वाई-फ़ाई स्कैन करने के लिए शॉर्टकट उपलब्ध कराएं मोड चालू करें. का उपयोग करें SettingsClient इससे यह पक्का किया जा सकता है कि डिवाइस की सिस्टम सेटिंग, बेहतर तरीके से कॉन्फ़िगर की गई हैं जगह की जानकारी का पता लगाने की सुविधा.

    ध्यान दें: अगर आपका ऐप्लिकेशन Android 10 (एपीआई लेवल 29) को टारगेट करता है या बहुत ज़्यादा है, तो आप WifiManager.setEnabled() को तब तक सीधे कॉल नहीं कर सकते जब तक कि आपका ऐप्लिकेशन, सिस्टम ऐप्लिकेशन या डिवाइस से जुड़ी नीति है कंट्रोलर (DPC) में बताया जाएगा. इसके बजाय, किसी सेटिंग पैनल पर क्लिक करें.

  • आपके जियोफ़ेंस में इंटरनेट की भरोसेमंद सुविधा नहीं है. अगर कोई कोई भरोसेमंद डेटा कनेक्शन नहीं होने की वजह से, हो सकता है कि सूचनाएं जनरेट न हों. ऐसा इसलिए है, क्योंकि जियोफ़ेंस सेवा नेटवर्क स्थान कंपनी पर निर्भर करता है जिसे बदले में डेटा कनेक्शन की आवश्यकता होती है.
  • चेतावनियां देर से मिल सकती हैं. जियोफ़ेंस सेवा, विज्ञापन के लिए लगातार क्वेरी नहीं करती है स्थान है, इसलिए अलर्ट मिलने के दौरान कुछ प्रतीक्षा अवधि हो सकती है. आम तौर पर, इंतज़ार का समय दो से कम होता है डिवाइस के मूव होने पर भी कम होता है. अगर आपने बैकग्राउंड जगह की जानकारी की सीमाएं लागू हैं. इंतज़ार का समय औसतन करीब दो से तीन मिनट होता है. अगर डिवाइस काफ़ी समय से एक ही जगह पर है, तो इंतज़ार का समय बढ़ सकता है (6 मिनट तक).

अन्य संसाधन

जियोफ़ेंसिंग के बारे में ज़्यादा जानने के लिए, यह कॉन्टेंट देखें:

सैंपल

जियोफ़ेंस बनाने और उन्हें मॉनिटर करने के लिए सैंपल ऐप्लिकेशन.