اعلان ها در سیستم عامل Android Automotive

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

تفاوت اعلان‌ها در خودروها

برای ایجاد یک محیط رانندگی ایمن و عاری از حواس‌پرتی، اعلان‌ها در سیستم عامل اندروید اتوموتیو با اعلان‌ها در سایر دستگاه‌ها از جهات زیر متفاوت هستند:

  • تعامل ساده‌شده با کاربر
  • محدودیت‌های UX بر اساس وضعیت درایو

تعامل ساده‌شده با کاربر

برای اطمینان از اینکه رانندگان می‌توانند روی جاده تمرکز کنند، اعلان‌ها در خودرو دارای یک مدل تعامل کاربر ساده با ویژگی‌های زیر هستند:

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

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

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

گزینه‌های نمایش اعلان ساده‌شده

RemoteViews و نمایش محتوای سفارشی پشتیبانی نمی‌شوند. علاوه بر این، سبک‌های اعلان زیر پشتیبانی نمی‌شوند:

اگر برنامه شما با استفاده از یکی از این سبک‌های اعلان، اعلانی به سیستم عامل Android Automotive ارسال کند، فقط متن خلاصه نمایش داده می‌شود.

مدیریت ساده کانال اعلان‌ها

سیستم عامل اندروید اتوموبیل از کانال‌های اعلان و رابط‌های کاربری مرتبط پشتیبانی نمی‌کند تا از شیوع وظایف مدیریتی پیچیده در دستگاه‌های خودرو بکاهد.

محدودیت‌های UX بر اساس وضعیت درایو

سیستم عامل اندروید اتوموتیو شامل یک موتور محدودکننده تجربه کاربری (UX Restrictions Engine) است. تولیدکنندگان خودرو می‌توانند از این موتور برای محدود کردن اعلان‌ها بر اساس وضعیت رانندگی خودرو به روش‌های زیر استفاده کنند:

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

انواع منابع پشتیبانی شده

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

  • ترسیم‌پذیرها
  • آیکن‌ها
  • تصاویر

الزامات سازگاری برای اعلان‌های پیام‌رسانی

برای ارائه یک تجربه کاربری منسجم و با حداقل مزاحمت، اعلان‌های پیام‌رسانی در سیستم عامل اندروید اتوموتیو الزامات خاصی دارند.

یک اعلان پیام‌رسان در صورتی با خودرو سازگار است که شرایط زیر را برآورده کند:

  • متعلق به دسته CATEGORY_MESSAGE است.
  • از استایل Notification.MessagingStyle استفاده می‌کند.
  • فقط شامل پیام‌های خوانده نشده می‌شود.
  • این یک Action علامت‌گذاری به عنوان خوانده شده دارد که الزامات زیر را برآورده می‌کند:

    • عمل معنایی روی Action.SEMANTIC_ACTION_MARK_AS_READ تنظیم شده است.
    • این Action نشان می‌دهد که هنگام اجرا هیچ رابط کاربری را نشان نمی‌دهد.
  • اگر اعلان دارای پاسخ Action باشد، آنگاه Action الزامات زیر را برآورده می‌کند:

    • عمل معنایی روی Action.SEMANTIC_ACTION_REPLY تنظیم شده است.
    • این Action نشان می‌دهد که هنگام اجرا هیچ رابط کاربری را نشان نمی‌دهد.
    • این Action شامل یک RemoteInput واحد است.

مرکز اعلان‌ها

تقریباً همه اعلان‌ها در مرکز اعلان‌ها ظاهر می‌شوند، حتی اگر آن اعلان‌ها به عنوان اعلان‌های هشدار نیز فعال شده باشند. اعلان‌ها در طول رانندگی در مرکز اعلان‌ها باقی می‌مانند.

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

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

اعلان‌های گروهی

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

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

اعلان‌های زیر در مرکز اعلان‌ها نمایش داده نمی‌شوند:

  • اعلان‌های Media playback . سیستم عامل اندروید اتو، اطلاعات مربوط به پخش مداوم رسانه را جمع‌آوری کرده و آن را در مکانی اختصاصی در رابط کاربری نمایش می‌دهد. توجه داشته باشید که برای اینکه سیستم، اعلان را به عنوان پخش رسانه تشخیص دهد، باید setMediaSession با یک توکن غیر تهی فراخوانی کنید.
  • اعلان‌های ناوبری مرحله به مرحله برای CATEGORY_NAVIGATION .
  • اعلان‌های سرویس پیش‌زمینه برای برنامه‌های دارای امتیاز سیستمی و برنامه‌هایی که با کلید پلتفرم امضا شده‌اند و سطح اهمیت آنها کمتر از IMPORTANCE_DEFAULT است.

اعلان‌های هشداردهنده

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

تولیدکنندگان خودرو می‌توانند تصمیم بگیرند که آیا اجازه دهند اعلان‌های هشدار در حین باز بودن مرکز اعلان‌ها نمایش داده شوند یا خیر.

چگونه برنامه‌ها اعلان‌های هشداردهنده را فعال می‌کنند

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

برنامه‌های دارای مجوز سیستم و برنامه‌های امضا شده با کلید پلتفرم
برنامه می‌تواند با تنظیم اهمیت کانال اعلان روی IMPORTANCE_HIGH یا بالاتر، یک اعلان هشداردهنده ایجاد کند.
همه برنامه‌های دیگر

این برنامه می‌تواند با تنظیم اهمیت کانال اعلان روی IMPORTANCE_HIGH یا بالاتر و تأیید اینکه اعلان به یکی از دسته‌های زیر تعلق دارد، یک اعلان هشداردهنده ایجاد کند:

طول عمر یک اعلان هشدار

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

  • اعلان‌های هشداردهنده برای برخی از تماس‌های ورودی قابل رد شدن نیستند و تا زمانی که راننده تماس را بپذیرد یا تماس قطع شود، همچنان باقی می‌مانند. برای اینکه یک اعلان هشداردهنده برای یک تماس ورودی غیرقابل رد شدن باشد، باید شرایط زیر را داشته باشد:

  • اگر برنامه‌ای اعلان را در بازه زمانی هشت ثانیه‌ای به‌روزرسانی کند، اعلان‌های هشدار همچنان باقی می‌مانند.

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

تغییرات و محدودیت‌های API اعلان برای خودروها

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

سازنده اعلان

جداول ۱ و ۲ تغییرات و محدودیت‌های API در کلاس Notification.Builder را شرح می‌دهند.

جدول 1. تغییرات در متدهای عمومی برای Notification.Builder

روش‌های عمومی اثر توضیحات

addAction()

عدم امکان مشروط اعلان‌های Notification.MessagingStyle باید اقدامات مشخص شده در الزامات سازگاری را اضافه کنند. هرگونه اقدام اضافی که اضافه شود، به عنوان دکمه‌های اعلان رندر نخواهد شد.

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

بدون عملیات RemoteViews و نمایش محتوای سفارشی پشتیبانی نمی‌شوند.

setBadgeIconType()

setNumber()

بدون عملیات نشان‌های اعلان پشتیبانی نمی‌شوند.

setChronometerCountDown()

setUsesChronometer()

بدون عملیات تایمرهای شمارش معکوس پشتیبانی نمی‌شوند.
setColorized() محدودیت‌ها تغییر کردند

برنامه‌های امضا شده توسط پلتفرم : قابل تنظیم؛ به طور پیش‌فرض مجاز هستند.

برنامه‌های دارای امتیاز سیستمی : توسط پلتفرم پیکربندی شده؛ به‌طور پیش‌فرض مجاز نیستند.

همه برنامه‌های دیگر : پیکربندی شده توسط پلتفرم؛ به طور پیش‌فرض مجاز نیستند.

setFullScreenIntent() رفتار تغییر کرد اینتنت را به صورت خودکار اجرا نمی‌کند.
setLargeIcon() رفتار تغییر کرد نمادهای بزرگ در سمت راست اعلان نشان داده می‌شوند.
setLights() بدون عملیات دستگاه‌های دارای سیستم عامل اندروید اتوموبیل چراغ‌های نشانگر LED ندارند.
setOngoing() رفتار تغییر کرد

وقتی اعلان، اعلان هشدار را نیز فعال می‌کند، رفتار متفاوت است.

setOngoing() فقط در صورتی اعلان هشدار را غیرقابل رد کردن می‌کند که مربوط به یک تماس ورودی باشد. برای اینکه یک اعلان هشدار برای یک تماس ورودی غیرقابل رد کردن باشد، باید الزامات تعریف‌شده را برآورده کند.

رانندگان می‌توانند انواع دیگر اعلان‌های هشدار را رد کنند.

setPublicVersion()

setVisibility()

بدون عملیات حالت خصوصی پشتیبانی نمی‌شود.
setSettingsText() بدون عملیات اعلان‌ها از قابلیت‌هایی که به تنظیمات برنامه مرتبط هستند پشتیبانی نمی‌کنند. رانندگان به جای آن از طریق برنامه به تنظیمات برنامه دسترسی دارند.
setTicker() بدون عملیات متن تیکت پشتیبانی نمی‌شود.

جدول 2. تغییرات در کلاس‌های تودرتو برای Notification.Builder

کلاس‌های تو در تو اثر توضیحات

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

استفاده نشده فقط متن خلاصه نمایش داده می‌شود. اعلان‌های دقیق برای این سبک‌ها پشتیبانی نمی‌شوند.
Notification.BubbleMetadata استفاده نشده حباب‌ها پشتیبانی نمی‌شوند.
Notification.MediaStyle پنهان اعلان‌هایی با این سبک پنهان هستند. سیستم عامل اندروید اتوموتیو تعاملات رابط کاربری را برای اعلان‌های رسانه‌ای و پخش مدیریت می‌کند.
Notification.MessagingStyle رفتار تغییر کرد

اعلان‌هایی با این سبک تفاوت‌های زیر را دارند:

Notification.CarExtender

Notification.WearableExtender

استفاده نشده توسعه‌دهنده‌ها پشتیبانی نمی‌شوند.

سازنده‌ی اعلان.اکشن

جدول ۳ تغییرات و محدودیت‌های API در کلاس Notification.Action.Builder را شرح می‌دهد.

جدول 3. تغییرات در متدهای عمومی برای Notification.Action.Builder

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