প্রকাশ এবং সদস্যতা

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

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

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

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

  • কাছাকাছি অক্ষম করতে একটি অ্যাপে নেভিগেট করুন।
  • একটি অ্যাপকে কাছাকাছি ব্যবহার বন্ধ করতে বাধ্য করুন।
  • কাছাকাছি সেটিংস স্ক্রিনে নেভিগেট করুন।

যখন কোনো ব্যবহারকারী অ্যাপটিকে কাছাকাছি ব্যবহার বন্ধ করতে বাধ্য করে তখন আপনি 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() এ কল করুন। আমরা বার্তাগুলিকে 3KB-এর থেকে কম রাখার পরামর্শ দিই--এই বার্তাগুলিকে আমরা দ্রুত ডেলিভার করতে পারি--কিন্তু যে অ্যাপগুলির জন্য এটি প্রয়োজন তাদের জন্য আমরা 100KB পর্যন্ত সমর্থন করতে পারি৷ এই পরিষেবাটি ফটো এবং ভিডিওর মতো বড় বস্তু বিনিময়ের জন্য নয়৷

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