ব্যবহারকারীদের কথোপকথনে অংশগ্রহণ করতে দিতে বুদবুদ ব্যবহার করুন

বুদবুদ ব্যবহারকারীদের কথোপকথন দেখতে এবং অংশগ্রহণ করা সহজ করে তোলে।

চিত্র 1. একটি চ্যাট বুদবুদ।

বুদবুদ বিজ্ঞপ্তি সিস্টেমের মধ্যে নির্মিত হয়. তারা অন্যান্য অ্যাপের বিষয়বস্তুর উপরে ভাসতে থাকে এবং যেখানেই যান ব্যবহারকারীকে অনুসরণ করে। ব্যবহারকারীরা অ্যাপের বিষয়বস্তু প্রকাশ করতে এবং ইন্টারঅ্যাক্ট করতে বুদবুদগুলিকে প্রসারিত করতে পারে এবং যখন তারা সেগুলি ব্যবহার করছে না তখন তারা সেগুলিকে ভেঙে ফেলতে পারে৷

যখন ডিভাইসটি লক থাকে, বা সর্বদা-অন-ডিসপ্লে সক্রিয় থাকে, তখন বুদবুদগুলি সাধারণত বিজ্ঞপ্তিগুলির মতোই প্রদর্শিত হয়৷

বুদবুদ একটি অপ্ট-আউট বৈশিষ্ট্য। যখন একটি অ্যাপ তার প্রথম বুদ্বুদ উপস্থাপন করে, একটি অনুমতি ডায়ালগ দুটি পছন্দ অফার করে:

  • আপনার অ্যাপ থেকে সমস্ত বুদবুদ ব্লক করুন। বিজ্ঞপ্তি ব্লক করা হয় না, কিন্তু তারা বুদবুদ হিসাবে প্রদর্শিত হবে না.
  • আপনার অ্যাপ থেকে সব বুদবুদ অনুমতি দিন. BubbleMetaData সহ পাঠানো সমস্ত বিজ্ঞপ্তি বুদবুদ হিসাবে উপস্থিত হয়।

বুদবুদ API

বুদবুদ বিজ্ঞপ্তি API ব্যবহার করে তৈরি করা হয়, তাই স্বাভাবিক হিসাবে আপনার বিজ্ঞপ্তি পাঠান. আপনি যদি আপনার বিজ্ঞপ্তিটি বুদবুদ হিসাবে প্রদর্শন করতে চান তবে এতে অতিরিক্ত ডেটা সংযুক্ত করুন।

একটি বুদবুদের প্রসারিত দৃশ্য আপনার চয়ন করা একটি কার্যকলাপ থেকে তৈরি করা হয়। একটি বুদবুদ হিসাবে সঠিকভাবে প্রদর্শন করার জন্য কার্যকলাপ কনফিগার করুন. ক্রিয়াকলাপটি অবশ্যই আকার পরিবর্তনযোগ্য এবং এমবেড করা উচিত। যদি এটিতে এই প্রয়োজনীয়তাগুলির মধ্যে একটির অভাব থাকে তবে এটি পরিবর্তে একটি বিজ্ঞপ্তি হিসাবে প্রদর্শিত হয়।

নিম্নলিখিত কোড দেখায় কিভাবে একটি বুদবুদ বাস্তবায়ন করতে হয়:

<activity
  android:name=".bubbles.BubbleActivity"
  android:theme="@style/AppTheme.NoActionBar"
  android:label="@string/title_activity_bubble"
  android:allowEmbedded="true"
  android:resizeableActivity="true"
/>

যদি আপনার অ্যাপ একই ধরণের একাধিক বুদবুদ দেখায়, যেমন বিভিন্ন পরিচিতির সাথে একাধিক চ্যাট কথোপকথন, কার্যকলাপটি অবশ্যই একাধিক দৃষ্টান্ত চালু করতে সক্ষম হবে। অ্যান্ড্রয়েড 10 এবং তার আগে চলমান ডিভাইসগুলিতে, বিজ্ঞপ্তিগুলিকে বুদবুদ হিসাবে দেখানো হয় না যদি না আপনি স্পষ্টভাবে documentLaunchMode "always" তে সেট না করেন৷ অ্যান্ড্রয়েড 11 দিয়ে শুরু করে, আপনাকে এই মানটি স্পষ্টভাবে সেট করার দরকার নেই, কারণ সিস্টেমটি স্বয়ংক্রিয়ভাবে সমস্ত কথোপকথনের documentLaunchMode "always" তে সেট করে।

একটি বুদ্বুদ পাঠাতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি সাধারণত যেমন করেন একটি বিজ্ঞপ্তি তৈরি করুন
  2. একটি BubbleMetadata অবজেক্ট তৈরি করতে BubbleMetadata.Builder(PendingIntent, Icon) অথবা BubbleMetadata.Builder(String) কল করুন।
  3. বিজ্ঞপ্তিতে মেটাডেটা যোগ করতে setBubbleMetadata() ব্যবহার করুন।
  4. যদি Android 11 বা উচ্চতরকে টার্গেট করা হয়, তবে নিশ্চিত করুন যে বুদ্বুদ মেটাডেটা বা বিজ্ঞপ্তি একটি শেয়ারিং শর্টকাট উল্লেখ করে।
  5. বুদবুদ হিসাবে প্রদর্শিত বিজ্ঞপ্তিগুলি বাতিল না করতে আপনার অ্যাপটি পরিবর্তন করুন৷ বিজ্ঞপ্তি কার্যকলাপ বুদবুদ হিসাবে চালু হয়েছে কিনা তা পরীক্ষা করতে, Activity#isLaunchedFromBubble() কল করুন। একটি বিজ্ঞপ্তি বাতিল করা স্ক্রীন থেকে বুদবুদ সরিয়ে দেয়। একটি বুদবুদ খুললে স্বয়ংক্রিয়ভাবে এর সাথে যুক্ত বিজ্ঞপ্তি লুকিয়ে থাকে।

এই পদক্ষেপগুলি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

// Create a bubble intent.
val target = Intent(context, BubbleActivity::class.java)
val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0 /* flags */)
val category = "com.example.category.IMG_SHARE_TARGET"

val chatPartner = Person.Builder()
    .setName("Chat partner")
    .setImportant(true)
    .build()

// Create a sharing shortcut.
val shortcutId = generateShortcutId()
val shortcut =
   ShortcutInfo.Builder(mContext, shortcutId)
       .setCategories(setOf(category))
       .setIntent(Intent(Intent.ACTION_DEFAULT))
       .setLongLived(true)
       .setShortLabel(chatPartner.name)
       .build()

// Create a bubble metadata.
val bubbleData = Notification.BubbleMetadata.Builder(bubbleIntent,
            Icon.createWithResource(context, R.drawable.icon))
    .setDesiredHeight(600)
    .build()

// Create a notification, referencing the sharing shortcut.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setBubbleMetadata(bubbleData)
    .setShortcutId(shortcutId)
    .addPerson(chatPartner)

জাভা

// Create a bubble intent.
Intent target = new Intent(mContext, BubbleActivity.class);
PendingIntent bubbleIntent =
    PendingIntent.getActivity(mContext, 0, target, 0 /* flags */);

private val CATEGORY_TEXT_SHARE_TARGET =
    "com.example.category.IMG_SHARE_TARGET"

Person chatPartner = new Person.Builder()
        .setName("Chat partner")
        .setImportant(true)
        .build();

// Create a sharing shortcut.
private String shortcutId = generateShortcutId();
ShortcutInfo shortcut =
   new ShortcutInfo.Builder(mContext, shortcutId)
       .setCategories(Collections.singleton(CATEGORY_TEXT_SHARE_TARGET))
       .setIntent(Intent(Intent.ACTION_DEFAULT))
       .setLongLived(true)
       .setShortLabel(chatPartner.getName())
       .build();

// Create a bubble metadata.
Notification.BubbleMetadata bubbleData =
    new Notification.BubbleMetadata.Builder(bubbleIntent,
            Icon.createWithResource(context, R.drawable.icon))
        .setDesiredHeight(600)
        .build();

// Create a notification, referencing the sharing shortcut.
Notification.Builder builder =
    new Notification.Builder(mContext, CHANNEL_ID)
        .setContentIntent(contentIntent)
        .setSmallIcon(smallIcon)
        .setBubbleMetadata(bubbleData)
        .setShortcutId(shortcutId)
        .addPerson(chatPartner);

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

একটি প্রসারিত বুদ্বুদ তৈরি করুন

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

পতাকা সেট করতে আপনি এমন পদ্ধতি ব্যবহার করতে পারেন যা এই আচরণগুলিকে সক্ষম করে: setAutoExpandBubble() এবং setSuppressNotification()

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি বুদবুদ স্বয়ংক্রিয়ভাবে একটি প্রসারিত অবস্থায় উপস্থিত হতে কনফিগার করতে হয়:

কোটলিন

val bubbleMetadata = Notification.BubbleMetadata.Builder()
    .setDesiredHeight(600)
    .setIntent(bubbleIntent)
    .setAutoExpandBubble(true)
    .setSuppressNotification(true)
    .build()

জাভা

Notification.BubbleMetadata bubbleData =
    new Notification.BubbleMetadata.Builder()
        .setDesiredHeight(600)
        .setIntent(bubbleIntent)
        .setAutoExpandBubble(true)
        .setSuppressNotification(true)
        .build();

বুদ্বুদ বিষয়বস্তু জীবনচক্র

যখন একটি বুদবুদ প্রসারিত হয়, তখন বিষয়বস্তুর কার্যকলাপ স্বাভাবিক প্রক্রিয়া জীবনচক্রের মধ্য দিয়ে যায়, যার ফলে অ্যাপ্লিকেশনটি একটি অগ্রভাগের প্রক্রিয়ায় পরিণত হয়, যদি এটি ইতিমধ্যে না থাকে।

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

বুদবুদ প্রদর্শিত হলে

ব্যবহারকারীর জন্য বাধা কমাতে, বুদবুদ শুধুমাত্র নির্দিষ্ট পরিস্থিতিতে প্রদর্শিত হয়।

যদি কোনো অ্যাপ Android 11 বা তার উচ্চতরকে লক্ষ্য করে, তাহলে কথোপকথনের প্রয়োজনীয়তা পূরণ না করা পর্যন্ত একটি বিজ্ঞপ্তি বুদবুদ হিসেবে প্রদর্শিত হবে না। যদি কোনো অ্যাপ অ্যান্ড্রয়েড 10 বা তার নিচের সংস্করণগুলিকে লক্ষ্য করে, তবে নিম্নলিখিত শর্তগুলির মধ্যে এক বা একাধিক পূরণ করা হলে বিজ্ঞপ্তিটি বুদবুদ হিসাবে প্রদর্শিত হবে:

  • বিজ্ঞপ্তিটি MessagingStyle ব্যবহার করে এবং এতে একজন Person যোগ করা হয়েছে।
  • বিজ্ঞপ্তিটি Service.startForeground এ একটি কল থেকে এসেছে, CATEGORY_CALL এর একটি category রয়েছে এবং একজন Person যুক্ত করা হয়েছে৷
  • বিজ্ঞপ্তি পাঠানো হলে অ্যাপটি ফোরগ্রাউন্ডে থাকে।

যদি এই শর্তগুলির কোনটিই পূরণ না হয় তবে বুদবুদের পরিবর্তে বিজ্ঞপ্তিটি দেখানো হয়৷

বুদবুদ থেকে কার্যক্রম চালু করা

যখন একটি বুদবুদ একটি নতুন কার্যকলাপ চালু করে, তখন নতুন কার্যকলাপ হয় একই টাস্ক এবং একই বুদবুদযুক্ত উইন্ডোর মধ্যে চালু হবে, অথবা পূর্ণস্ক্রীনে একটি নতুন টাস্কে, যে বুদ্বুদটি এটি চালু করেছে সেটিকে ভেঙে পড়বে৷

বুদবুদের মতো একই টাস্কে একটি নতুন অ্যাক্টিভিটি চালু করতে: 1. ইন্টেন্ট চালু করার সময় কার্যকলাপের প্রসঙ্গ ব্যবহার করুন, activity.startActivity(intent) এবং 1. অভিপ্রায়ে FLAG_ACTIVITY_NEW_TASK পতাকা সেট করবেন না৷

অন্যথায়, একটি নতুন কার্যে নতুন কার্যকলাপ শুরু হয় এবং বুদবুদটি ভেঙে যায়।

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

সর্বোত্তম অনুশীলন

  • একটি বুদবুদ হিসাবে একটি বিজ্ঞপ্তি পাঠান শুধুমাত্র যদি এটি গুরুত্বপূর্ণ হয়, যেমন যখন এটি একটি চলমান যোগাযোগের অংশ হয় বা ব্যবহারকারী স্পষ্টভাবে বিষয়বস্তুর জন্য একটি বুদবুদ অনুরোধ করে। বুদবুদ স্ক্রীন রিয়েল এস্টেট ব্যবহার করে এবং অন্যান্য অ্যাপ সামগ্রী কভার করে।
  • নিশ্চিত করুন যে আপনার বুদবুদ বিজ্ঞপ্তি একটি স্বাভাবিক বিজ্ঞপ্তি হিসাবে কাজ করে। যখন ব্যবহারকারী বুদ্বুদ নিষ্ক্রিয় করে, তখন একটি বুদবুদ বিজ্ঞপ্তি একটি সাধারণ বিজ্ঞপ্তি হিসাবে দেখানো হয়।
  • বুদবুদ কার্যকলাপে onBackPressed ওভাররাইড করার সময় super.onBackPressed কল করুন৷ অন্যথায়, আপনার বুদ্বুদ সঠিকভাবে আচরণ করতে পারে না।

যখন একটি ধসে পড়া বুদবুদ একটি আপডেট করা বার্তা পায়, তখন একটি অপঠিত বার্তা নির্দেশ করতে বাবলটি একটি ব্যাজ আইকন দেখায়৷ ব্যবহারকারী যখন সংশ্লিষ্ট অ্যাপে বার্তাটি খোলে, এই পদক্ষেপগুলি অনুসরণ করুন:

  • বিজ্ঞপ্তি দমন করতে BubbleMetadata আপডেট করুনBubbleMetadata.Builder.setSuppressNotification() কল করুন। ব্যবহারকারী বার্তার সাথে ইন্টারঅ্যাক্ট করেছেন তা নির্দেশ করতে এটি ব্যাজ আইকনটি সরিয়ে দেয়।
  • BubbleMetadata আপডেটের সাথে থাকা শব্দ বা কম্পনকে দমন করতে Notification.Builder.setOnlyAlertOnce() true সেট করুন।

নমুনা অ্যাপ্লিকেশন

সোশিয়ালাইট নমুনা অ্যাপ হল একটি কথোপকথন অ্যাপ যা বুদবুদ ব্যবহার করে। প্রদর্শনের উদ্দেশ্যে, এই অ্যাপটি চ্যাটবট ব্যবহার করে। বাস্তব-বিশ্বের অ্যাপ্লিকেশনগুলিতে, মানুষের দ্বারা বার্তাগুলির জন্য বুদবুদ ব্যবহার করুন৷