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

ওয়াচের বিজ্ঞপ্তি একই API ব্যবহার করে এবং ফোনের বিজ্ঞপ্তির মতো একই গঠন থাকে।

দু'টি উপায়ে ওয়াচে বিজ্ঞপ্তি দেখা যেতে পারে:

  1. মোবাইল অ্যাপ একটি বিজ্ঞপ্তি তৈরি করে এবং সিস্টেম অটোমেটিক সেই বিজ্ঞপ্তিটি ওয়াচে ব্রিজ করে।
  2. একটি পরিধানযোগ্য অ্যাপ বিজ্ঞপ্তি তৈরি করে।

দুটি ক্ষেত্রেই বিজ্ঞপ্তি তৈরি করতে NotificationCompat.Builder ক্লাস ব্যবহার করুন। আপনি যখন বিল্ডার ক্লাস দিয়ে বিজ্ঞপ্তি তৈরি করেন, তখন সিস্টেম বিজ্ঞপ্তি সঠিকভাবে দেখানোর বিষয়টি দেখে নেয়। যেমন, আপনার মোবাইল অ্যাপ থেকে কোনও বিজ্ঞপ্তি ইস্যু করলে, প্রতিটি বিজ্ঞপ্তি বিজ্ঞপ্তি স্ট্রিমে কার্ড হিসেবে দেখা যায়।

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

ঘড়িতে বিজ্ঞপ্তি কার্ড।
ছবি ১. ফোন ও ওয়াচে একই বিজ্ঞপ্তি দেখানো হচ্ছে।

সবচেয়ে ভালো ফলাফল পেতে, একটি NotificationCompat.Style সাবক্লাস ব্যবহার করুন।

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

মনে রাখবেন: ফুল-স্ক্রিন ইনটেন্ট বিজ্ঞপ্তি (setFullScreenIntent()) এবং USE_FULL_SCREEN_INTENT অনুমতি Wear OS-এ কাজ করে না।

পরে থাকা যায় এমন ডিভাইসের জন্য সাজেস্ট করা বিজ্ঞপ্তি

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

আপনি মোবাইল ডিভাইসে যেভাবে এক্সপ্যান্ড করা যায় এমন বিজ্ঞপ্তি তৈরি করেন ঠিক সেইভাবে, যেকোনও NotificationCompat.Style সাবক্লাস ব্যবহার করে তৈরি করতে পারবেন। যেমন, একটি সাধারণ বিজ্ঞপ্তি যা NotificationCompat.MessagingStyle ব্যবহার করে, সেটি দেখতে এইরকম হয়:

ওয়াচে বড় করা যায় এমন MessagingStyle বিজ্ঞপ্তি
ছবি ২. Wear OS-এ MessagingStyle বিজ্ঞপ্তির উদাহরণ।

আপনি দেখতে পাবেন যে বিজ্ঞপ্তিটিতে একাধিক অ্যাকশন আছে যা এক্সপ্যান্ড করা অবস্থায় নিচের দিকে স্ট্যাক করা আছে।

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

ডুপ্লিকেট বিজ্ঞপ্তি এড়িয়ে চলুন

সাধারণত, কোনও পেয়ার করা ওয়াচে কম্প্যানিয়ন ফোন অ্যাপ থেকে বিজ্ঞপ্তি ব্রিজ করা হয়। আপনার ডিভাইসে কোনও ওয়্যারেবল অ্যাপ ইনস্টল করা না থাকলে, এটি একটি দারুণ বিকল্প।

তবে, আপনি যদি একটি স্ট্যান্ডঅ্যালোন ওয়াচ অ্যাপ এবং একটি কম্প্যানিয়ন ফোন অ্যাপ তৈরি করেন, তাহলে অ্যাপগুলি ডুপ্লিকেট বিজ্ঞপ্তি তৈরি করে।

Wear OS, Bridging API-এর মাধ্যমে ডুপ্লিকেট বিজ্ঞপ্তি বন্ধ করার একটি উপায় প্রদান করে। Wear OS 5 বা এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে থাকা অ্যাপের জন্য এটি বিশেষভাবে গুরুত্বপূর্ণ, কারণ কিছু বিজ্ঞপ্তি মোবাইল ডিভাইসে বাতিল করা গেলেও Wear OS ডিভাইসে বাতিল করা যায় না। আরও তথ্যের জন্য, বিজ্ঞপ্তির জন্য ব্রিজিং বিকল্প পড়ুন।

বিজ্ঞপ্তিতে পরিধানযোগ্য ডিভাইস-নির্দিষ্ট ফিচার যোগ করা

বিজ্ঞপ্তিতে ওয়্যারেবল-নির্দিষ্ট ফিচার যোগ করতে চাইলে, বিকল্প নির্দিষ্ট করার জন্য 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. ConfirmationActivity-এর এক্সটেনশন হিসেবে নতুন Activity তৈরি করুন।
  2. ফোন অ্যাপ লঞ্চ করতে নতুন Activity-এ RemoteActivityHelper ব্যবহার করুন।
  3. বিজ্ঞপ্তি থেকে Activity লঞ্চ করার জন্য Intent তৈরি করার সময়, OPEN_ON_PHONE_ANIMATION-এ EXTRA_ANIMATION_TYPE এক্সট্রা সেট করুন।

এই পদ্ধতি ব্যবহারকারীকে তার ফোনে ইন্টার‍্যাক্ট করতে গাইড করে এবং ব্যাকগ্রাউন্ড প্রসেস লঞ্চ করার জন্য প্ল্যাটফর্মের প্রয়োজনীয়তা মেনে চলে।

মনে রাখবেন: আপনি বিজ্ঞপ্তি অ্যাকশনের টার্গেট হিসেবে BroadcastReceiver ব্যবহার করতে পারবেন না।