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