Nearby Messages হল একটি প্রকাশ-সাবস্ক্রাইব API যা কাছাকাছি ডিভাইসগুলিকে ছোট ছোট ডেটা পেলোড বিনিময় করতে দেয়। একবার কোনও ডিভাইস একটি বার্তা প্রকাশ করলে, কাছাকাছি ডিভাইসগুলি বার্তাটি গ্রহণ করতে পারে। এই নির্দেশিকাটি আপনাকে Nearby Messages API ব্যবহার করে বার্তা প্রকাশ এবং সাবস্ক্রাইব করার জন্য আপনার অ্যাপের যে সমস্ত কার্যকারিতা প্রয়োগ করতে হবে তার সমস্ত দিক নির্দেশনা দেয়।
কাছাকাছি ডিভাইসের সেটটি ব্লুটুথের মাধ্যমে ছোট টোকেন বিনিময়ের মাধ্যমে নির্ধারিত হয়। যখন কোনও ডিভাইস কাছাকাছি কোনও ডিভাইস থেকে একটি টোকেন সনাক্ত করে, তখন এটি যাচাই করার জন্য এবং অ্যাপ্লিকেশনের বর্তমান সাবস্ক্রিপশনের সেটের জন্য কোনও বার্তা সরবরাহ করার জন্য আছে কিনা তা পরীক্ষা করার জন্য টোকেনটি কাছাকাছি বার্তা সার্ভারে পাঠায়।
একটি অ্যাপ্লিকেশন ডিভাইস আবিষ্কারের জন্য ব্যবহৃত মাধ্যমের সেট নিয়ন্ত্রণ করতে পারে, এবং মাধ্যমগুলি টোকেন সম্প্রচার এবং/অথবা টোকেন স্ক্যান করার জন্য ব্যবহৃত হবে কিনা তা নিয়ন্ত্রণ করতে পারে। ডিফল্টরূপে, সমস্ত মাধ্যমে সম্প্রচার এবং স্ক্যানিং করা হয়। একটি উপসেট বা মাধ্যমে আবিষ্কার করতে এবং সম্প্রচার বা স্ক্যান করতে হবে কিনা তা নিয়ন্ত্রণ করতে, প্রকাশনা এবং সাবস্ক্রিপশন তৈরি করার সময় আপনাকে অতিরিক্ত পরামিতিগুলি পাস করতে হবে।
সক্রিয়ভাবে প্রকাশ এবং সাবস্ক্রাইব করার সময়, "Nearby is in use" বিজ্ঞপ্তিটি ব্যবহারকারীদের জানানো হয় যে Nearby সক্রিয়। এই বিজ্ঞপ্তিটি কেবল তখনই প্রদর্শিত হয় যখন এক বা একাধিক অ্যাপ সক্রিয়ভাবে Nearby ব্যবহার করছে, যা ব্যবহারকারীদের Nearby প্রয়োজন না হলে ব্যাটারি লাইফ সংরক্ষণের সুযোগ দেয়। এটি ব্যবহারকারীদের নিম্নলিখিত বিকল্পগুলি প্রদান করে:
- Nearby অক্ষম করতে একটি অ্যাপে নেভিগেট করুন।
- কোনও অ্যাপকে 'নিকটবর্তী' ব্যবহার বন্ধ করতে বাধ্য করুন।
- কাছাকাছি সেটিংস স্ক্রিনে নেভিগেট করুন।
যখন কোনও ব্যবহারকারী অ্যাপটিকে Nearby ব্যবহার বন্ধ করতে বাধ্য করে, তখন আপনি PublishCallback() এবং SubscribeCallback() ব্যবহার করতে পারেন। যখন এটি ঘটে, তখন onExpired() পদ্ধতিটি ট্রিগার হয়।
যেহেতু Nearby Messages API গুলির ব্যাটারি লাইফ প্রভাবিত করার সম্ভাবনা রয়েছে, তাই এগুলি শুধুমাত্র ফোরগ্রাউন্ড অ্যাক্টিভিটি থেকে ব্যবহার করা উচিত ( BLE background subscribe ব্যতীত)।
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() নম্বরে কল করুন এবং আপনার বার্তা বাইট অ্যারেটি পাস করুন। আমরা বার্তাগুলিকে 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() পদ্ধতিতে 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);
}