مردم و گفتگوها

طرح «افراد و مکالمات» یک طرح چند ساله اندروید است که هدف آن ارتقای افراد و مکالمات در سطوح سیستمی تلفن همراه است. این اولویت بر این اساس است که ارتباط و تعامل با سایر افراد هنوز هم ارزشمندترین و مهمترین حوزه عملکردی برای اکثر کاربران ما در تمام گروه‌های جمعیتی است.

تعدادی ویژگی در اندروید ۱۱ برای پشتیبانی از طرح «افراد و مکالمات» معرفی شدند.

فضای گفتگو


فضای مکالمه، یک ناحیه اعلان اختصاصی برای مکالمات بلادرنگ بین انسان‌ها است.
شکل ۱ : فضای گفتگوها.

در دستگاه‌های دستی، بخش جداگانه‌ای در بالای نوار اعلان‌ها وجود دارد که فقط شامل مکالمات بلادرنگ با افراد (مانند تماس‌ها و پیام‌های چت، از جمله چت‌های گروهی) است. اعلان‌ها در این فضا، ظاهر و عملکرد متفاوتی نسبت به اعلان‌های غیر مکالمه‌ای در بسیاری از تلفن‌ها دارند:

  • طراحی متفاوت است، با تأکید قوی بر آواتار نماینده افراد همراه با برنامه‌ای که مکالمه را انجام می‌دهد.
  • با یک ضربه روی اعلان، مکالمه در برنامه (یا اگر مکالمه قبلاً در حباب قرار گرفته باشد، یک حباب ) باز می‌شود و با یک ضربه روی هشتک، پیام‌های جدید در سایه به طول کامل به همراه لیست کامل گزینه‌ها نمایش داده می‌شوند.
  • اقدامات خاص مکالمه ارائه می‌شوند (بعضی با فشار طولانی):
    • این مکالمه را به عنوان اولویت علامت گذاری کنید
    • این مکالمه را به حباب (bubble) ارتقا دهید (فقط در صورتی نشان داده می‌شود که برنامه از حباب پشتیبانی کند)
    • بی‌صدا کردن اعلان‌های این مکالمه
    • صداها یا لرزش‌های سفارشی را برای این مکالمه تنظیم کنید

مکالمات در حباب‌ها

اگر یک اعلان شرایط مکالمه را برآورده کند، پلتفرم آن را به صورت حبابی از کشوی اعلان‌ها اجرا می‌کند.
شکل ۲ : اعلان به صورت حباب از کشوی اعلان‌ها اجرا می‌شود.

از اندروید ۱۱ به بعد، حباب‌ها (Bubbles) را می‌توان از اعلان‌های بخش مکالمات (Conversations) شروع کرد. فقط اعلان‌هایی که دارای میانبر مرتبط هستند، می‌توانند حبابی شوند. مکالمات اگر به عنوان مهم علامت‌گذاری شوند یا در قسمت اعلان‌ها فعال شوند، به طور خودکار حبابی می‌شوند.

میانبرهای مکالمه

میانبرهای مکالمات در لانچر و در کنار میانبرهای اشتراک‌گذاری long-lived در صفحه اشتراک‌گذاری ظاهر می‌شوند.

دستورالعمل‌های API

این بخش APIهایی را شرح می‌دهد که برای پشتیبانی از فضای ارائه شده توسط سیستم که افراد و مکالمات را نشان می‌دهد، در برنامه شما استفاده می‌شوند.

میانبرهایی برای گفتگوها

برای شرکت در این ابتکار گفتگومحور، برنامه‌ها باید میانبرهای طولانی‌مدت را در اختیار سیستم قرار دهند. ما اکیداً توصیه می‌کنیم از میانبرهای اشتراک‌گذاری طولانی‌مدت استفاده کنید. در صورت لزوم، می‌توانید از میانبرهای پویا در اندروید ۱۱ استفاده کنید، اما ممکن است این گزینه را در آینده حذف کنیم.

برای انتشار یک میانبر برای مکالمه، متدهای ShortcutManagerCompat setDynamicShortcuts() ، addDynamicShortcuts() یا pushDynamicShortcut() (که به طور خودکار محدودیت میانبر را برای توسعه‌دهنده مدیریت می‌کند) را فراخوانی کنید. این میانبر باید طولانی مدت باشد و داده‌های Person را برای یک یا چند نفر پیوست کند که سایر شرکت‌کنندگان در مکالمه را شناسایی می‌کند. همچنین توصیه می‌کنیم LocusIdCompat را تنظیم کنید.

اگر مکالمه‌ای دیگر وجود نداشته باشد، برنامه می‌تواند میانبر را با استفاده از removeLongLivedShortcuts() حذف کند؛ انجام این کار باعث می‌شود سیستم تمام داده‌های مرتبط با مکالمه را حذف کند. اگرچه میانبرها قابل حذف هستند، برنامه‌ها نباید میانبرهای ذخیره شده را حذف کنند، مگر اینکه کاملاً ضروری باشد. یک میانبر احتمالاً به این دلیل ذخیره می‌شود که کاربر برای تغییر تجربه خود با آن تعامل داشته است و حذف میانبر، آن تغییرات را خنثی می‌کند و منجر به ناامیدی کاربر می‌شود.

اعلان‌های مکالمه

یک اعلان در صورت صحت موارد زیر، به عنوان اعلان مکالمه در نظر گرفته می‌شود:

  • این اعلان از MessagingStyle استفاده می‌کند.

  • (فقط در صورتی که برنامه اندروید ۱۱ یا بالاتر را هدف قرار دهد) اعلان با یک میانبر اشتراک‌گذاری پویا یا ذخیره‌شده‌ی معتبر با طول عمر بالا مرتبط است. اعلان می‌تواند این ارتباط را با فراخوانی setShortcutId() یا setShortcutInfo() تنظیم کند. اگر برنامه اندروید ۱۰ یا پایین‌تر را هدف قرار می‌دهد، اعلان لازم نیست با یک میانبر مرتبط باشد، همانطور که در بخش گزینه‌های جایگزین بحث شده است.

  • کاربر در زمان ارسال پست، از طریق تنظیمات کانال اعلان، مکالمه را از بخش مکالمه حذف نکرده باشد.

از LocusIdCompat استفاده کنید

هوش درون دستگاه، مکالماتی را که کاربر به احتمال زیاد به آنها علاقه‌مند است، تعیین می‌کند. از جمله مهمترین سیگنال‌ها، تازگی و فراوانی جلسات مکالمه در هر مکالمه است. سیستم در صورت برچسب‌گذاری صحیح، از تعاملات با یک مکالمه از طریق میانبرهای لانچر یا درون یک اعلان مطلع می‌شود. با این حال، سیستم در مورد مکالماتی که به طور کامل در برنامه اتفاق افتاده‌اند، اطلاعی ندارد، مگر اینکه آن تعاملات نیز برچسب‌گذاری شده باشند. بنابراین، اکیداً توصیه می‌کنیم که یک LocusIdCompat به میانبر پیوست کنید و فعالیت یا قطعه درون برنامه را با LocusIdCompat مرتبط حاشیه‌نویسی کنید. از LocusIdCompat برای فعال کردن سیستم پیشنهاد دهنده جهت رتبه‌بندی صحیح مکالمه و فعال کردن سیستم برای نمایش زمان صحیح آخرین تعامل کاربر (از جمله تعاملات درون برنامه‌ای) با یک مکالمه استفاده کنید. اگر از setShortcutInfo() برای مرتبط کردن مکالمه با یک میانبر استفاده کنید، سیستم مکالمات به طور خودکار LocusIdCompat مناسب را پیوست می‌کند.

الزامات فضای مکالمه برای برنامه‌هایی که اندروید ۱۰ یا پایین‌تر را هدف قرار می‌دهند

اگر یک برنامه اندروید ۱۱ را هدف قرار ندهد، پیام‌های آن همچنان می‌توانند در فضای مکالمه نمایش داده شوند. با این حال، برنامه همچنان باید الزامات خاصی را برآورده کند. این بخش الزامات آن برنامه‌ها و رفتار جایگزین در صورت عدم برآورده شدن الزامات توسط برنامه را شرح می‌دهد.

الزام اصلی برای مشارکت در فضای پیام‌رسانی این است که برنامه باید اعلان‌های MessagingStyle را پیاده‌سازی کند و اعلان‌ها باید به یک میانبر طولانی‌مدت از اعلانی که در زمان ارسال اعلان منتشر می‌شود، ارجاع دهند. اعلان‌هایی که این الزامات را برآورده می‌کنند، با این رفتار در فضای مکالمه ظاهر می‌شوند:

  • اعلان‌ها به سبک مکالمه نمایش داده می‌شوند
  • در صورت پیاده‌سازی، دکمه حبابی ارائه می‌شود
  • توابع خاص مکالمه به صورت درون خطی ارائه می‌شوند

اگر اعلان این الزامات را برآورده نکند، پلتفرم از گزینه‌های جایگزین برای قالب‌بندی اعلان استفاده می‌کند. اگر اعلانی الزامات هر یک از حالت‌های جایگزین را برآورده کند، اعلان در فضای مکالمه با قالب‌بندی ویژه نمایش داده می‌شود. اگر اعلان واجد شرایط هیچ یک از گزینه‌های جایگزین نباشد، در فضای مکالمه نمایش داده نمی‌شود.

جایگزین: اگر از MessagingStyle استفاده شده باشد اما هیچ میانبری ارائه نشده باشد

اگر برنامه اندروید ۱۰ یا پایین‌تر را هدف قرار دهد و اعلان از MessagingStyle استفاده کند اما پیام را با میانبر مرتبط نکند ، اعلان در فضای مکالمه با این رفتار نشان داده می‌شود:

  • اعلان‌ها به سبک مکالمه نمایش داده می‌شوند
  • هیچ دکمه حبابی ارائه نمی‌شود
  • هیچ عملکرد خاص مکالمه‌ای به صورت درون‌خطی ارائه نمی‌شود

جایگزین: اگر از MessagingStyle استفاده نشده باشد، اما برنامه یک برنامه پیام‌رسان شناخته شده باشد

اگر یک اعلان از MessagingStyle استفاده نکند اما برنامه توسط پلتفرم به عنوان یک برنامه پیام‌رسان شناخته شود و پارامتر category اعلان روی msg تنظیم شده باشد، اعلان با این رفتار در فضای مکالمه نمایش داده می‌شود:

  • اعلان‌ها به سبک قدیمی و قبل از اندروید ۱۱ نمایش داده می‌شوند
  • هیچ دکمه حبابی ارائه نمی‌شود
  • هیچ عملکرد خاص مکالمه‌ای به صورت درون‌خطی ارائه نمی‌شود

راهنمایی، کاربرد و آزمایش

این بخش راهنمایی کلی در مورد نحوه استفاده و آزمایش ویژگی‌های مکالمه ارائه می‌دهد.

چه زمانی باید از مکالمات استفاده کنم؟

اعلان‌های مکالمه و میانبرهای مرتبط با آن برای بهبود تجربه کاربری مکالمات بلادرنگ در نظر گرفته شده‌اند. به عنوان مثال، پیامک، چت متنی و تماس تلفنی مکالمات بلادرنگ هستند که کاربران انتظار دارند در آنها به سرعت ارتباط برقرار کنند. کاربران چنین انتظاری را در مورد ایمیل‌ها و فعالیت‌های غیرمرتبط با مکالمات ندارند.

ما به کاربران این امکان را داده‌ایم که اگر احساس می‌کنند مکالمه‌ی مورد نظر در فضای مناسبی قرار ندارد، آن را از بخش مکالمه حذف کنند.

بهترین شیوه‌ها

برای افزایش تعامل و آسان‌تر کردن تعامل کاربران با افراد و گفتگوهای پیرامون اپلیکیشن، توصیه می‌کنیم از بهترین شیوه‌های زیر استفاده کنید.

  • برای اطمینان از اینکه تماس‌های از دست رفته در کادر گفتگوی اولویت‌بندی شده نمایش داده می‌شوند و به درستی در ابزارک تبدیل نمایش داده می‌شوند، اعلان‌های تماس از دست رفته را به عنوان conversations با دسته‌بندی CATEGORY_MISSED_CALL قالب‌بندی کنید.
  • آواتارهای با کیفیت بالا (104dp) برای کاربران فراهم کنید؛ در غیر این صورت، سیستم از حروف اول نام فرد استفاده می‌کند که تجربه‌ی چندان جذابی نیست.
  • قبل از اینکه کاربر پیام را ندیده باشد، اعلان مکالمه cancel نکنید. یک نمونه از این موارد، لغو اعلان هنگام باز کردن برنامه در نمایی است که کاربر نمی‌تواند پیام را ببیند یا به آن پاسخ دهد. اگر به کاربر فرصت خواندن یا پاسخ دادن به پیام داده نشود، اعلان لغو شده و حباب مربوط به آن حذف می‌شوند و در نتیجه زمینه مکالمه از بین می‌رود.
  • یک URI data برای فراداده‌های مربوط به MIME مرتبط با پیام‌ها ارائه دهید، که به شما امکان می‌دهد تجربه غنی‌تری در اعلان‌ها ارائه دهید.
  • از API Android 12 status برای جذاب‌تر کردن ویجت‌های مکالمه استفاده کنید.
  • بهترین شیوه‌های زیر را برای میانبرهای مکالمه اتخاذ کنید.
    • میانبرهایی را برای مکالمات ورودی و خروجی درون برنامه‌ای که اعلان ارسال نمی‌کنند، منتشر کنید. پیام‌های ورودی و خروجی برای یک مکالمه باید شناسه میانبر یکسانی داشته باشند. از pushDynamicShortcut() برای انتشار میانبرهای خود و گزارش میزان استفاده استفاده کنید.
    • برای جلوگیری از حذف ناخواسته‌ی آواتار میانبر خود، یک AdaptiveIconDrawable برای آیکون میانبر ارائه دهید. برای جزئیات بیشتر به بخش «ارائه‌ی تصاویر میانبر» مراجعه کنید.
    • برای کمک به سیستم در ارتقای میانبر خود، دستورالعمل‌های مربوط به کسب بهترین رتبه‌بندی را دنبال کنید. میانبر شما در سطوح مختلف سیستم، از جمله در صفحه اشتراک‌گذاری اندروید (اگر یک میانبر اشتراک‌گذاری باشد)، رتبه‌بندی می‌شود.
    • مطمئن شوید که میانبرهای مکالمه مستقیماً در مکالمه مربوطه intents می‌شوند.
    • از کتابخانه‌های سازگار (compat libs) برای تنظیم راحت میانبرهای خود به عنوان میانبرهای مرتبط با conversation استفاده کنید.

آزمایش اعلان‌ها و میانبرهای مکالمه

با لمس طولانی مدت یک مکالمه، منویی از اقدامات مرتبط با مکالمه باز می‌شود.
شکل ۳ : می‌توانید با لمس طولانی مدت اعلان مکالمه و نمایش منوی مکالمه، از پیکربندی صحیح آن اطمینان حاصل کنید.

اگر دستورالعمل‌های فضای مکالمه را دنبال کنید، مکالمات باید به طور خودکار در فضای مکالمه ظاهر شوند. می‌توانید با لمس طولانی روی اعلان، تأیید کنید که میانبر به درستی ادغام شده است. اگر ادغام به درستی انجام شده باشد، رابط کاربری اقدامات مربوط به مکالمه را نشان می‌دهد. اگر اعلان به میانبری متصل نباشد، رابط کاربری متنی را نشان می‌دهد که بیان می‌کند برنامه از ویژگی‌های مکالمه پشتیبانی نمی‌کند.

میانبرهای اضافه شده با لمس طولانی روی لانچر برنامه نمایش داده می‌شوند. حتماً بررسی کنید که میانبرها شما را به مکان صحیح در برنامه‌تان هدایت می‌کنند.

میانبرهای اشتراک‌گذاری اضافه شده هنگام اشتراک‌گذاری محتوایی که میانبر اشتراک‌گذاری شما می‌تواند دریافت کند، در ردیف اشتراک‌گذاری مستقیم صفحه اشتراک‌گذاری نشان داده می‌شوند.

ابزارک‌های مکالمه

مکالمات نمایش داده شده در ابزارک‌های مکالمه
شکل ۱ : گفتگوهای نمایش داده شده در ابزارک‌های گفتگو.

در اندروید ۱۲، ویژگی ابزارک مکالمه (Conversation Widget) بر اساس ویژگی افراد و مکالمات (People and conversations) که در اندروید ۱۱ معرفی شده بود، ساخته شده است و به برنامه‌ها اجازه می‌دهد وضعیت مکالمه را در ابزارک‌های مکالمه نمایش دهند.

ویجت‌های مکالمه با فراهم کردن امکان باز کردن آسان چت‌ها در صفحه اصلی، تعامل کاربر را ارتقا می‌دهند. این ویجت‌ها میانبرهای پیشرفته‌ای هستند که به کاربران امکان می‌دهند ضمن نمایش خلاصه‌هایی از وضعیت مکالمه یا سایر اطلاعات مرتبط، به طور مؤثر به مکالمات خود بازگردند.

تأیید کنید که برنامه شما از ابزارک‌های مکالمه پشتیبانی می‌کند

برای تأیید اینکه برنامه شما از ویجت‌های مکالمه پشتیبانی می‌کند، باید حداقل دو دستگاه اندروید (هر دو با اندروید ۱۲) و دو حساب کاربری (یکی روی هر دستگاه) برای تبادل پیام داشته باشید. برای اهداف این روش، ما حساب‌ها را «کاربر A» و «کاربر B» می‌نامیم.

رابط کاربری انتخابگر ویجت برای افزودن ویجت مکالمه جدید
شکل ۲ : رابط کاربری انتخابگر ابزارک برای افزودن ابزارک مکالمه جدید.

مراحل زیر را انجام دهید:

  1. در دستگاه کاربر A، روی لانچر انگشت خود را نگه دارید و نگه دارید. در انتخابگر ویجت، همانطور که در شکل ۲ نشان داده شده است، روی یک ویجت جدید برای مکالمه ضربه بزنید.
  2. ویجت را به صفحه اصلی بکشید. لیستی از مکالمات فعال یا اخیر از برنامه کاربر A باید قابل انتخاب باشد.
  3. حالا، روی دستگاه کاربر B، یک پیام آزمایشی به کاربر A ارسال کنید.
  4. به دستگاه کاربر A برگردید، تأیید کنید که ویجت به‌روزرسانی شده است تا اعلان پیام کاربر B را منعکس کند.
  5. اختیاری: از کاربر A و کاربر B بخواهید که گفتگو را روی مقادیر وضعیت متفاوت تنظیم کنند تا مطمئن شوند که ویجت‌هایشان به درستی آنها را منعکس می‌کنند. برای فهرستی از مقادیر وضعیت، به ConversationStatus مراجعه کنید.