Wear OS-এ বিজ্ঞপ্তি

ঘড়ির নোটিফিকেশনগুলো ফোনের নোটিফিকেশনের মতোই একই এপিআই ব্যবহার করে এবং এগুলোর গঠনও একই রকম।

ঘড়িতে নোটিফিকেশন দুইভাবে দেখা যেতে পারে:

  1. একটি মোবাইল অ্যাপ একটি নোটিফিকেশন তৈরি করলে, সিস্টেমটি স্বয়ংক্রিয়ভাবে সেই নোটিফিকেশনটি ঘড়িতে পাঠিয়ে দেয়
  2. একটি পরিধানযোগ্য অ্যাপ একটি নোটিফিকেশন তৈরি করে।

উভয় ক্ষেত্রেই, নোটিফিকেশন তৈরি করতে NotificationCompat.Builder ক্লাসটি ব্যবহার করুন। যখন আপনি বিল্ডার ক্লাস দিয়ে নোটিফিকেশন তৈরি করেন, তখন সিস্টেম নোটিফিকেশনগুলো সঠিকভাবে প্রদর্শনের দায়িত্ব নেয়। উদাহরণস্বরূপ, যখন আপনি আপনার মোবাইল অ্যাপ থেকে একটি নোটিফিকেশন পাঠান, তখন প্রতিটি নোটিফিকেশন নোটিফিকেশন স্ট্রিমে একটি কার্ড হিসেবে প্রদর্শিত হয়।

নোটিফিকেশনগুলো কীভাবে প্রদর্শিত হয় তা দেখতে নিচের উদাহরণটি পর্যালোচনা করুন।

বিজ্ঞপ্তি-কার্ড

চিত্র ১. একই নোটিফিকেশন একটি ফোন এবং একটি ঘড়িতে প্রদর্শিত হচ্ছে।

সর্বোত্তম ফলাফলের জন্য NotificationCompat.Style সাবক্লাসগুলোর মধ্যে একটি ব্যবহার করুন।

দ্রষ্টব্য: RemoteViews ব্যবহার করলে নোটিফিকেশন থেকে কাস্টম লেআউটগুলো বাদ পড়ে যায় এবং পরিধানযোগ্য ডিভাইসটিতে শুধু টেক্সট ও আইকনগুলো প্রদর্শিত হয়।

দ্রষ্টব্য: Wear OS-এ ফুল-স্ক্রিন ইন্টেন্ট নোটিফিকেশন ( setFullScreenIntent() ) এবং USE_FULL_SCREEN_INTENT পারমিশন সমর্থিত নয়।

পরিধানযোগ্য ডিভাইসের জন্য প্রস্তাবিত বিজ্ঞপ্তি

সমস্ত নোটিফিকেশনের সূচনা হিসেবে এক্সপ্যান্ডেবল নোটিফিকেশন ব্যবহার করুন, কারণ এটি ওয়্যারেবল ব্যবহারকারীদের সম্পৃক্ত করার একটি দারুণ উপায়। সংকুচিত অবস্থায় এটি নোটিফিকেশন ট্রে-তে প্রদর্শিত হয়, যা এক নজরে দেখার মতো একটি সংক্ষিপ্ত অভিজ্ঞতা দেয়। ব্যবহারকারী এটিতে ট্যাপ করলে, নোটিফিকেশনটি প্রসারিত হয় এবং অতিরিক্ত বিষয়বস্তু ও কার্যকলাপের একটি আকর্ষণীয় ও স্ক্রলযোগ্য অভিজ্ঞতা প্রদান করে।

আপনি NotificationCompat.Style সাবক্লাসগুলোর যেকোনো একটি ব্যবহার করে, মোবাইলের মতোই একটি এক্সপ্যান্ডেবল নোটিফিকেশন তৈরি করতে পারেন। উদাহরণস্বরূপ, NotificationCompat.MessagingStyle ব্যবহার করে তৈরি একটি স্ট্যান্ডার্ড নোটিফিকেশন দেখতে এইরকম হয়:

সম্প্রসারণযোগ্য-বিজ্ঞপ্তি

চিত্র ২. Wear OS-এ একটি MessagingStyle নোটিফিকেশনের উদাহরণ।

আপনি দেখতে পাচ্ছেন যে নোটিফিকেশনটির প্রসারিত অবস্থার একেবারে নিচে একাধিক অ্যাকশন স্তূপীকৃত অবস্থায় রয়েছে।

পরামর্শ: আপনার নোটিফিকেশনে যদি কোনো মেসেজিং অ্যাপের মতো 'রিপ্লাই' অ্যাকশন থাকে, তাহলে আপনি নোটিফিকেশনটির কার্যকারিতা আরও উন্নত করতে পারেন। উদাহরণস্বরূপ, আপনি সরাসরি ওয়্যারেবল থেকে ভয়েস ইনপুট রিপ্লাই অথবা setChoices() ব্যবহার করে আগে থেকে সংজ্ঞায়িত টেক্সট রেসপন্স চালু করতে পারেন। আরও তথ্যের জন্য, “রিপ্লাই বাটন যোগ করুন” পড়ুন।

ডুপ্লিকেট নোটিফিকেশন এড়িয়ে চলুন

ডিফল্টরূপে, একটি সহযোগী ফোন অ্যাপ থেকে যেকোনো পেয়ার করা ঘড়িতে নোটিফিকেশন পাঠানো হয়। আপনার যদি কোনো ওয়্যারেবল অ্যাপ ইনস্টল করা না থাকে, তবে এটি একটি চমৎকার বিকল্প।

তবে, যদি আপনি একটি স্বতন্ত্র ওয়াচ অ্যাপ এবং একটি সহযোগী ফোন অ্যাপ তৈরি করেন, তাহলে অ্যাপগুলো একই ধরনের নোটিফিকেশন তৈরি করে।

Wear OS, ব্রিজিং এপিআই (Bridging APIs) ব্যবহার করে ডুপ্লিকেট নোটিফিকেশন বন্ধ করার একটি উপায় প্রদান করে। Wear OS 5 বা তার উচ্চতর সংস্করণে চালিত ডিভাইসের অ্যাপগুলোর জন্য এটি বিশেষভাবে গুরুত্বপূর্ণ, কারণ কিছু নোটিফিকেশন যা মোবাইল ডিভাইসে বাতিল করা যায়, তা Wear OS ডিভাইসে বাতিল করা যায় না। আরও তথ্যের জন্য, ‘নোটিফিকেশনের জন্য ব্রিজিং অপশন’ (Bridging options for notifications ) পড়ুন।

একটি নোটিফিকেশনে পরিধানযোগ্য ডিভাইসের জন্য নির্দিষ্ট ফিচার যোগ করুন

কোনো নোটিফিকেশনে পরিধানযোগ্য ডিভাইসের জন্য নির্দিষ্ট ফিচার যোগ করার প্রয়োজন হলে, আপনি অপশনগুলো নির্দিষ্ট করার জন্য NotificationCompat.WearableExtender ক্লাসটি ব্যবহার করতে পারেন। এই API-টি ব্যবহার করতে, নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

দ্রষ্টব্য: আপনি যদি ফ্রেমওয়ার্কের NotificationManager ব্যবহার করেন, তাহলে NotificationCompat.WearableExtender এর কিছু বৈশিষ্ট্য কাজ করবে না, তাই অবশ্যই NotificationCompat ব্যবহার করবেন।

এই উদাহরণটি দেখায় কিভাবে নোটিফিকেশনে একটি Wear-নির্দিষ্ট অ্যাকশন সেট করতে হয় এবং ডিসমিসাল আইডি- ও সেট করতে হয়। যখন নোটিফিকেশনটি ডিসমিস করা হয়, তখন একই ডিসমিসাল আইডি সহ অন্য সব নোটিফিকেশন ঘড়ি এবং সহযোগী ফোন থেকেও ডিসমিস হয়ে যায়। ডিসমিসাল আইডি পেতে, getDismissalId() ব্যবহার করুন।

// This intent will be fired as a result of the user clicking the "Open on watch" action.
// However, it executes on the phone, not on the watch. Typically, the Activity should then use
// RemoteActivityHelper to then launch the correct activity on the watch.
val intent = Intent(context, LaunchOnWearActivity::class.java)
val wearPendingIntent = PendingIntent.getActivity(
    context,
    wearRequestCode,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)

val openOnWatchAction = NotificationCompat.Action.Builder(
    R.drawable.watch,
    "Open on watch",
    wearPendingIntent
)
    .build()

val wearableExtender = NotificationCompat.WearableExtender()
    // This action will only be shown on the watch, not on the phone.
    // Actions added to the Notification builder directly will not be shown on the watch,
    // because one or more actions are defined in the WearableExtender.
    .addAction(openOnWatchAction)
    // This synchronizes dismissals between watch and phone.
    .setDismissalId(chatId)

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(wearableExtender)
    .build()

পরিধানযোগ্য ডিভাইস থেকে আপনার ফোন অ্যাপ চালু করুন

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

  1. একটি নতুন Activity তৈরি করুন যা ConfirmationActivity এক্সটেন্ড করে।
  2. নতুন Activity ফোন অ্যাপটি চালু করতে RemoteActivityHelper ব্যবহার করুন।
  3. নোটিফিকেশন থেকে Activity চালু করার জন্য Intent তৈরি করার সময়, EXTRA_ANIMATION_TYPE এক্সট্রাটিকে OPEN_ON_PHONE_ANIMATION এ সেট করুন।
এই পদ্ধতিটি ব্যবহারকারীকে তার ফোনে ইন্টারঅ্যাক্ট করতে নির্দেশনা দেয় এবং ব্যাকগ্রাউন্ড প্রসেস চালু করার জন্য প্ল্যাটফর্মের প্রয়োজনীয়তাগুলো অনুসরণ করে।

দ্রষ্টব্য: আপনি নোটিফিকেশন অ্যাকশনের টার্গেট হিসেবে BroadcastReceiver ব্যবহার করতে পারবেন না।