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

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

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

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

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

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

जब उपयोगकर्ता ने ऐप्लिकेशन को 'आस-पास' सुविधा का इस्तेमाल बंद करने के लिए कहा, तब PublishCallback() और SubscribeCallback() का इस्तेमाल उन मामलों को सुनने के लिए किया जा सकता है. ऐसा होने पर, 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);
}