প্রকাশ ও সাবস্ক্রাইব করা

'আশেপাশের মেসেজ' হল একটি প্রকাশ-সাবস্ক্রাইব API যা আশেপাশের ডিভাইসগুলিকে ডেটার ছোট পেলোড বিনিময় করতে দেয়। কোনও ডিভাইস মেসেজ প্রকাশ করলে, আশেপাশের ডিভাইস মেসেজটি পেতে পারে। এই নির্দেশিকা আপনাকে সেই সমস্ত কার্যকারিতা সম্পর্কে জানাবে যা আপনার অ্যাপকে অবশ্যই প্রয়োগ করতে হবে যাতে মেসেজ প্রকাশ করা যায় এবং Nearby Messages API ব্যবহার করে মেসেজে সাবস্ক্রাইব করা যায়।

ব্লুটুথের মাধ্যমে ছোট টোকেন আদানপ্রদান করে আশেপাশের ডিভাইসের সেট নির্ধারণ করা হয়। কোনও ডিভাইস যখন আশেপাশের কোনও ডিভাইস থেকে টোকেন শনাক্ত করে, তখন এটি টোকেনটি যাচাই করার জন্য এবং অ্যাপ্লিকেশনের বর্তমান সাবস্ক্রিপশনের সেটের জন্য কোনও মেসেজ ডেলিভার করার আছে কিনা তা চেক করার জন্য Nearby Messages সার্ভারে পাঠায়।

ডিভাইস খোঁজার জন্য ব্যবহৃত মাধ্যমের সেট এবং টোকেন ব্রডকাস্ট এবং/অথবা টোকেন স্ক্যান করার জন্য মাধ্যমগুলি ব্যবহার করা হয় কিনা তা একটি অ্যাপ্লিকেশন নিয়ন্ত্রণ করতে পারে। ডিফল্ট হিসেবে, সব মাধ্যমে ব্রডকাস্ট ও স্ক্যান করা হয়। সাবসেট বা মিডিয়ামে ডিসকভারি করতে এবং ব্রডকাস্ট বা স্ক্যান করা হবে কিনা তা নিয়ন্ত্রণ করতে, আপনাকে প্রকাশনা ও সাবস্ক্রিপশন তৈরি করার সময় অতিরিক্ত প্যারামিটার পাস করতে হবে।

সক্রিয়ভাবে প্রকাশ ও সাবস্ক্রাইব করার সময়, "Nearby ব্যবহার করা হচ্ছে" বিজ্ঞপ্তি দেখানো হয়, যা ব্যবহারকারীদের জানায় যে Nearby সক্রিয় আছে। এই বিজ্ঞপ্তিটি শুধুমাত্র তখনই দেখানো হয় যখন এক বা একাধিক অ্যাপ সক্রিয়ভাবে 'আশেপাশে' ফিচারটি ব্যবহার করে, যা ব্যবহারকারীদের 'আশেপাশে' ফিচারটির প্রয়োজন না হলে ব্যাটারির আয়ু বাঁচানোর সুযোগ দেয়। এটি ব্যবহারকারীদের নিম্নলিখিত বিকল্পগুলি প্রদান করে:

  • 'নিয়ারবাই' ফিচার বন্ধ করতে কোনও অ্যাপে নেভিগেট করুন।
  • কোনও অ্যাপকে 'নিয়ারবাই' ব্যবহার করা থেকে জোর করে বন্ধ করুন।
  • আশেপাশের সেটিংস স্ক্রিনে যান।

ব্যবহারকারী Nearby ব্যবহার করা বন্ধ করার জন্য অ্যাপকে বাধ্য করলে, আপনি PublishCallback() এবং SubscribeCallback() ব্যবহার করে সেইসব কেস শুনতে পারবেন। এটি হলে, onExpired() পদ্ধতি ট্রিগার হয়।

Nearby Messages API ব্যাটারির আয়ুর উপর প্রভাব ফেলতে পারে, তাই এটি শুধুমাত্র ফোরগ্রাউন্ড অ্যাক্টিভিটি থেকে ব্যবহার করা উচিত (BLE ব্যাকগ্রাউন্ড সাবস্ক্রাইব ব্যতীত)।

Nearby Messages API ব্যবহার করতে publish() এবং/অথবা subscribe() কল করুন। আপনার অ্যাপকে সবসময় onStop()-এ unpublish() এবং unsubscribe() সিমেট্রিক্যালি করতে হবে।

@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() কল করুন। আমরা সাজেস্ট করি যে মেসেজের সাইজ ৩ কেবির কম রাখুন--এইসব মেসেজ আমরা আরও দ্রুত ডেলিভার করতে পারি--তবে যেসব অ্যাপের জন্য প্রয়োজন, সেগুলির ক্ষেত্রে আমরা ১০০ কেবি পর্যন্ত মেসেজ ডেলিভার করতে পারি। এই পরিষেবাটি ফটো এবং ভিডিওর মতো বড় অবজেক্ট আদান-প্রদানের জন্য নয়।

ব্যবহার করার জন্য কৌশল সেট করতে আপনি বিকল্প হিসেবে 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);
}