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

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

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

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

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

  • 'आस-पास मौजूद डिवाइसों से कनेक्ट करें' सुविधा को बंद करने के लिए, किसी ऐप्लिकेशन पर जाएं.
  • किसी ऐप्लिकेशन को आस-पास के डिवाइसों से कनेक्ट होने से रोकना.
  • आस-पास मौजूद डिवाइसों से जुड़ी सेटिंग स्क्रीन पर जाएं.

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() तरीके में unpublish को कॉल करना चाहिए. उसी 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);
}