प्रकाशित करें और सदस्यता लें

'आस-पास' सुविधा के लिए, मैसेज पब्लिश करने और उनकी सदस्यता लेने की सुविधा देने वाला एपीआई उपलब्ध है. इसकी मदद से, आस-पास मौजूद डिवाइस, डेटा के छोटे पेलोड का लेन-देन कर सकते हैं. किसी डिवाइस के मैसेज पब्लिश करने के बाद, आस-पास मौजूद डिवाइस उस मैसेज को पा सकते हैं. इस गाइड में, उन सभी सुविधाओं के बारे में बताया गया है जिन्हें आपके ऐप्लिकेशन में लागू करना ज़रूरी है. इनकी मदद से, Nearby Messages API का इस्तेमाल करके मैसेज पब्लिश किए जा सकते हैं और उनकी सदस्यता ली जा सकती है.

ब्लूटूथ के ज़रिए छोटे टोकन के लेन-देन से, आस-पास मौजूद डिवाइसों के सेट का पता चलता है. जब किसी डिवाइस को आस-पास मौजूद किसी डिवाइस से टोकन मिलता है, तो वह उस टोकन को Nearby Messages के सर्वर पर भेजता है, ताकि उसकी पुष्टि की जा सके. साथ ही, यह भी देखा जा सके कि ऐप्लिकेशन की मौजूदा सदस्यता के लिए कोई मैसेज डिलीवर करना है या नहीं.

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

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

  • Nearby सुविधा बंद करने के लिए, किसी ऐप्लिकेशन पर जाएं.
  • किसी ऐप्लिकेशन को Nearby सुविधा का इस्तेमाल करने से रोकें.
  • Nearby की सेटिंग स्क्रीन पर जाएं.

PublishCallback() और SubscribeCallback() का इस्तेमाल करके, उन स्थितियों के बारे में सुना जा सकता है जिनमें कोई उपयोगकर्ता, ऐप्लिकेशन को Nearby सुविधा का इस्तेमाल करने से रोकता है. ऐसा होने पर, यह तरीका ट्रिगर होता है.onExpired()

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

Nearby Messages API का इस्तेमाल करने के लिए, publish() और/या subscribe() को कॉल करें. आपके ऐप्लिकेशन को हमेशा सिमेट्रिक तरीके से unpublish() और unsubscribe() को onStop()में कॉल करना चाहिए.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    mMessageListener = new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.d(TAG, "Found message: " + new String(message.getContent()));
        }

        @Override
        public void onLost(Message message) {
            Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
        }
    }

    mMessage = new Message("Hello World".getBytes());
}

@Override
public void onStart() {
    super.onStart();
    ...
    Nearby.getMessagesClient(this).publish(mMessage);
    Nearby.getMessagesClient(this).subscribe(mMessageListener);
}

@Override
public void onStop() {
    Nearby.getMessagesClient(this).unpublish(mMessage);
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
    ...
    super.onStop();
}

मैसेज पब्लिश करना

मैसेज पब्लिश करने के लिए, Nearby.getMessagesClient(Activity).publish() को कॉल करें. साथ ही, अपने मैसेज का बाइट कलेक्शन पास करें. हमारा सुझाव है कि मैसेज का साइज़ 3 केबी से कम रखें. इससे हम इन मैसेज को तेज़ी से डिलीवर कर सकते हैं. हालांकि, जिन ऐप्लिकेशन को इसकी ज़रूरत होती है उनके लिए, हम 100 केबी तक के मैसेज डिलीवर कर सकते हैं. इस सेवा का मकसद, फ़ोटो और वीडियो जैसे बड़े ऑब्जेक्ट का लेन-देन करना नहीं है.

इस्तेमाल की जाने वाली रणनीति सेट करने के लिए, ज़रूरत पड़ने पर PublishOptions.setStrategy() को कॉल किया जा सकता है.

यहां दिए गए उदाहरण में, टेक्स्ट का छोटा मैसेज भेजने के लिए, publish() को कॉल करने का तरीका दिखाया गया है:

private void publish(String message) {
    Log.i(TAG, "Publishing message: " + message);
    mActiveMessage = new Message(message.getBytes());
    Nearby.getMessagesClient(this).publish(mActiveMessage);
}

मैसेज को अनपब्लिश करना

किसी मैसेज को अनपब्लिश करने के लिए, unpublish() को कॉल करें. आपके ऐप्लिकेशन को कम से कम, अपने onStop() तरीके में अनपब्लिश को कॉल करना चाहिए. वही Message ऑब्जेक्ट पास करें जिसका इस्तेमाल पब्लिश करने के लिए किया गया था. इस उदाहरण में, यह mActiveMessage है.

यहां दिए गए कोड के उदाहरण में, unpublish() को कॉल करने का तरीका दिखाया गया है:

private void unpublish() {
    Log.i(TAG, "Unpublishing.");
    if (mActiveMessage != null) {
        Nearby.getMessagesClient(this).unpublish(mActiveMessage);
        mActiveMessage = null;
    }
}

मैसेज की सदस्यता लेना

दूसरे डिवाइसों से मैसेज की सदस्यता लेने के लिए, Nearby.getMessagesClient(Activity).subscribe() को कॉल करें. सदस्यता वाले मैसेज पाने के लिए, आपको MessageListener पास करना होगा.

इस्तेमाल की जाने वाली रणनीति सेट करने के लिए, ज़रूरत पड़ने पर SubscribeOptions.setStrategy() को कॉल किया जा सकता है.

यहां दिए गए उदाहरण में, मैसेज की सदस्यता लेने का तरीका दिखाया गया है:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    mMessageListener = new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.d(TAG, "Found message: " + new String(message.getContent()));
        }

        @Override
        public void onLost(Message message) {
            Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
        }
    }
}

// Subscribe to receive messages.
private void subscribe() {
    Log.i(TAG, "Subscribing.");
    Nearby.getMessagesClient(this).subscribe(mMessageListener, options);
}

सदस्यता छोड़ना

सदस्यता छोड़ने और डिवाइस के मैसेज पाना बंद करने के लिए, Nearby.getMessagesClient(Activity).unsubscribe() को कॉल करें. वही MessageListener ऑब्जेक्ट पास करें जिसका इस्तेमाल सदस्यता लेने के लिए किया गया था. इस उदाहरण में, यह mMessageListener है.

यहां दिए गए कोड के उदाहरण में, सदस्यता छोड़ने का तरीका दिखाया गया है:

private void unsubscribe() {
    Log.i(TAG, "Unsubscribing.");
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}