الإشعارات على نظام التشغيل Android Automotive

توفّر الإشعارات للسائقين معلومات قصيرة وفي الوقت المناسب عن الأحداث من تطبيقك عندما لا يكون قيد الاستخدام. يمكن أن تظهر الإشعارات في مركز الإشعارات، ويمكن أن تظهر بعض الإشعارات أيضًا كإشعارات بانر على الشاشة. لإنشاء إشعارات لنظام التشغيل Android Automotive، عليك استخدام واجهة برمجة التطبيقات NotificationBuilder نفسها التي تستخدمها للأجهزة الأخرى. ومع ذلك، للمساعدة في ضمان سلامة السائقين والحد من مصادر التشتيت، يتم تقييد بعض طرق وفئات واجهة برمجة التطبيقات أو تتصرف بشكل مختلف.

كيف تختلف الإشعارات في السيارات؟

لتهيئة بيئة قيادة آمنة وخالية من مصادر التشتيت، تختلف الإشعارات على نظام التشغيل Android Automotive عن الإشعارات على الأجهزة الأخرى بالطرق التالية:

  • تبسيط تفاعل المستخدم
  • قيود تجربة المستخدم استنادًا إلى حالة القيادة

تبسيط تفاعل المستخدم

للمساعدة في ضمان تركيز السائقين على الطريق، تتضمّن الإشعارات في السيارة نموذجًا مبسطًا لتفاعل المستخدمين مع الميزات التالية:

لا تتضمّن عناصر تحكّم معقّدة
لا تتيح الإشعارات عناصر تحكّم معقّدة، مثل النقر لتوسيع إشعار أو الضغط مع الاستمرار على إشعار لعرض خيارات إضافية أو استخدام عناصر تحكّم استنادًا إلى إيماءات طول التمرير السريع.
أصوات الإشعارات
لا تصدر الإشعارات صوتًا إلا إذا أدّت إلى ظهور إشعار منبثق.
أزرار التشغيل التلقائي وكتم الصوت لإشعارات المراسلة

يضيف نظام التشغيل Android Automotive تلقائيًا الزرَّين تشغيل وتجاهل إلى جميع إشعارات المراسلة المتوافقة مع السيارة.

  • تشغيل: يقرأ الإشعار للسائق باستخدام المساعد الرقمي التلقائي للمستخدم، مثل "مساعد Google"، أو نظام تحويل النص إلى كلام التلقائي في السيارة.
  • تجاهل: يمنع ظهور الإشعارات المنبثقة لأي رسائل مستقبلية في المحادثة لبقية مدة القيادة. تستمر إشعارات الرسائل من محادثة تم تجاهلها في الظهور في "مركز الإشعارات"، ويمكن للسائق أيضًا إلغاء تجاهل المحادثة من "مركز الإشعارات".

خيارات عرض الإشعارات المبسّطة

RemoteViews والمشاهدات المخصّصة للمحتوى غير متاحة. بالإضافة إلى ذلك، لا تتوافق أنماط الإشعارات التالية:

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle
  • ProgressStyle

إذا كان تطبيقك يرسل إشعارًا إلى نظام التشغيل Android Automotive باستخدام أحد أنماط الإشعارات هذه، سيتم عرض النص الموجز فقط.

إدارة قنوات الإشعارات بشكل مبسّط

لا يتيح نظام التشغيل Android Automotive قنوات الإشعارات وعناصر واجهة المستخدم ذات الصلة، وذلك للحدّ من انتشار مهام الإدارة المتقدّمة في أجهزة Automotive.

قيود تجربة المستخدم استنادًا إلى حالة القيادة

يتضمّن نظام التشغيل Android Automotive محرك قيود تجربة المستخدم. يمكن لمصنّعي السيارات استخدام هذا المحرّك لحظر الإشعارات استنادًا إلى حالة القيادة في السيارة بالطرق التالية:

  • اقتطاع سلاسل الإشعارات عند عدد أحرف معيّن
  • إخفاء ملخّصات الرسائل في إشعارات CATEGORY_MESSAGE
  • تقليل عدد الإشعارات التي يمكن أن يعرضها "مركز الإشعارات"

أنواع الموارد المتوافقة

يتوافق نظام التشغيل Android Automotive تلقائيًا مع مجموعة فرعية محدودة من أنواع الموارد التي يمكن استخدامها للإشعارات على الأجهزة الأخرى. تتضمّن هذه المجموعة الفرعية أنواع الموارد التالية:

  • عناصر قابلة للرسم
  • الرموز
  • صور

متطلبات التوافق مع إشعارات المراسلة

لتوفير تجربة مستخدم متّسقة وبأقل قدر من التشتيت، تتضمّن إشعارات المراسلة متطلبات خاصة على نظام التشغيل Android Automotive.

يكون إشعار المراسلة متوافقًا مع السيارة إذا استوفى المتطلبات التالية:

  • وينتمي إلى فئة CATEGORY_MESSAGE.
  • يستخدم هذا النمط Notification.MessagingStyle.
  • وهي تتضمّن الرسائل غير المقروءة فقط.
  • يحتوي على زر "وضع علامة مقروءة" Action يستوفي المتطلبات التالية:

    • تم ضبط الإجراء الدلالي على Action.SEMANTIC_ACTION_MARK_AS_READ.
    • يشير Action إلى أنّه لا يعرض أي واجهة مستخدم عند تشغيله.
  • إذا كان الإشعار يتضمّن ردًا Action، يجب أن يستوفي Action المتطلبات التالية:

    • تم ضبط الإجراء الدلالي على Action.SEMANTIC_ACTION_REPLY.
    • يشير Action إلى أنّه لا يعرض أي واجهة مستخدم عند تشغيله.
    • يحتوي Action على RemoteInput واحد.

مركز الإشعارات

تظهر كل الإشعارات تقريبًا في "مركز الإشعارات"، حتى إذا تم عرضها أيضًا كإشعارات عائمة. تبقى الإشعارات في "مركز الإشعارات" طوال مدة الرحلة.

يمكن للسائقين التفاعل مع الإشعارات في "مركز الإشعارات". استنادًا إلى الشركة المصنّعة للسيارة، يمكن للسائقين الوصول إلى "مركز الإشعارات" بإحدى الطريقتَين التاليتَين أو كلتيهما:

  • التمرير سريعًا من أعلى الشاشة إلى أسفلها، على غرار درج الإشعارات على الأجهزة الأخرى
  • النقر على زر في واجهة النظام

الإشعارات المجمَّعة

يتم تلقائيًا تجميع الإشعارات ذات الصلة في "مركز الإشعارات"، كما هو الحال في لوحة الإشعارات على الأجهزة الأخرى. ومع ذلك، عندما ينقر السائق على الملخّص الخاص بمجموعة في "مركز الإشعارات"، سيتم توسيع المجموعة لعرض جميع إشعاراتها بدلاً من تشغيل PendingIntent.

الإشعارات التي لا تظهر في "مركز الإشعارات"

لا تظهر الإشعارات التالية في "مركز الإشعارات":

  • Media playback الإشعارات. يجمع نظام التشغيل Android Automotive معلومات حول تشغيل الوسائط الجاري ويعرضها في مكان مخصّص في واجهة المستخدم. يُرجى العِلم أنّه يجب استدعاء setMediaSession باستخدام رمز مميّز غير فارغ لكي يتم التعرّف على الإشعار على أنّه تشغيل وسائط.
  • إشعارات الاتّجاهات المفصّلة الخاصة بـ CATEGORY_NAVIGATION
  • إشعارات الخدمة التي تعمل في المقدّمة للتطبيقات التي لديها امتيازات على مستوى النظام والتطبيقات الموقَّعة باستخدام مفتاح النظام الأساسي والتي يكون مستوى أهميتها أقل من IMPORTANCE_DEFAULT

الإشعارات المنبثقة

تظهر الإشعارات المنبثقة كبطاقة إشعار في أعلى الشاشة. بما أنّ التنبيهات الظاهرة على الشاشة تجذب انتباه السائق، يجب ألا يتم عرضها إلا إذا كانت المعلومات مهمة جدًا أثناء القيادة، أو حساسة من حيث الوقت، أو تتطلّب اتّخاذ إجراء. يمكن لفئات معيّنة فقط من الإشعارات أن تؤدي إلى ظهور إشعار بانر.

يمكن لمصنّعي السيارات تحديد ما إذا كانوا سيسمحون بعرض الإشعارات المنبثقة أثناء فتح "مركز الإشعارات".

كيفية إطلاق التطبيقات للتنبيهات المنبثقة

تتضمّن التطبيقات متطلبات مختلفة لتفعيل إشعار بانر استنادًا إلى ما إذا كانت لديها امتيازات النظام.

التطبيقات التي تتطلّب امتيازات على مستوى النظام والتطبيقات الموقَّعة باستخدام مفتاح النظام الأساسي
يمكن للتطبيق إطلاق تنبيه منبثق من خلال ضبط أهمية قناة الإشعارات على IMPORTANCE_HIGH أو أعلى.
جميع التطبيقات الأخرى

يمكن للتطبيق تشغيل إشعار منبثق من خلال ضبط أهمية قناة الإشعارات على IMPORTANCE_HIGH أو أعلى والتأكّد من أنّ الإشعار ينتمي إلى إحدى الفئات التالية:

مراحل ظهور إشعار تنبيه

بعد أن يرسل تطبيق إشعارًا منبثقًا، يظهر الإشعار على الفور على شاشة السيارة. في حال عدم اتخاذ السائق أي إجراء، سيتم إغلاق الإشعار التنبيهي تلقائيًا بعد ثماني ثوانٍ، باستثناء الحالات التالية:

  • لا يمكن إغلاق التنبيهات المنبثقة لبعض المكالمات الواردة، ويبقى التنبيه المنبثق معروضًا إلى أن يقبل السائق المكالمة أو يتم إنهاؤها. لكي يكون الإشعار مؤهَّلاً لأن يكون إشعارًا غير قابل للتجاهل على الشاشة الرئيسية بشأن مكالمة واردة، يجب أن يستوفي المتطلبات التالية:

  • ستبقى الإشعارات المنبثقة إذا عدّل التطبيق الإشعار خلال فترة الثماني ثوانٍ.

عند إغلاق إشعار بانر، يتم إدراج الإشعار في مركز الإشعارات، ما لم يكن إشعارًا من CATEGORY_NAVIGATION.

التغييرات والقيود المفروضة على Notification API للسيارات

يلخّص هذا القسم الاختلافات لكل فئة تتصرف فيها واجهة برمجة التطبيقات Notifications بشكل مختلف أو تتضمّن قيودًا على نظام التشغيل Android Automotive.

Notification.Builder

يوضّح الجدولان 1 و2 التغييرات والقيود المفروضة على واجهة برمجة التطبيقات في الفئة Notification.Builder.

الجدول 1 تغييرات على الطرق العامة لـ Notification.Builder

الطُرق العامة التأثير الوصف

addAction()

عملية غير قابلة للتنفيذ بشكل شرطي يجب أن تضيف إشعارات Notification.MessagingStyle الإجراءات المحدّدة في متطلبات التوافق. لن يتم عرض أي إجراءات إضافية تتم إضافتها كأزرار إشعارات.

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

No-op RemoteViews ومشاهدات المحتوى المخصّص غير متاحة.

setBadgeIconType()

setNumber()

No-op لا تتوفّر شارات الإشعارات.

setChronometerCountDown()

setUsesChronometer()

No-op لا يمكن استخدام مؤقتات العد التنازلي.
setColorized() تم تغيير القيود

التطبيقات الموقَّعة من النظام الأساسي: يمكن ضبطها، ويتم السماح بها تلقائيًا.

التطبيقات التي تتطلّب امتيازات على مستوى النظام: يتم ضبطها من خلال النظام الأساسي، ويتم حظرها تلقائيًا.

جميع التطبيقات الأخرى: يتم ضبطها حسب النظام الأساسي، ويتم حظرها تلقائيًا.

setFullScreenIntent() تم تغيير السلوك لا يتم تشغيل الغرض تلقائيًا.
setLargeIcon() تم تغيير السلوك تظهر الرموز الكبيرة على الجانب الأيسر من الإشعار.
setLights() No-op لا تحتوي أجهزة Android Automotive OS على مصابيح مؤشر LED.
setOngoing() تم تغيير السلوك

يختلف السلوك عندما يؤدي الإشعار أيضًا إلى ظهور تنبيه.

لا يمنع setOngoing() إغلاق التنبيه إلا إذا كان التنبيه متعلقًا بمكالمة واردة. لكي يكون الإشعار تنبيهًا غير قابل للتجاهل بشأن مكالمة واردة، يجب أن يستوفي الإشعار متطلبات setPublicVersion().

setVisibility()

No-op لا يمكن استخدام الوضع الخاص.
setSettingsText() No-op لا تتيح الإشعارات عناصر تحكّم تؤدي إلى إعدادات التطبيق. يمكن للسائقين الوصول إلى إعدادات التطبيق من خلال التطبيق بدلاً من ذلك.
setTicker() No-op لا تتوفّر ميزة عرض النص المتحرّك.

الجدول 2 التغييرات التي طرأت على الفئات الفرعية في Notification.Builder

الفئات المتداخلة التأثير الوصف

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

لم يتم الاستخدام يظهر نص الملخّص فقط. لا تتوفّر إشعارات مفصّلة لهذه الأنماط.
Notification.BubbleMetadata لم يتم الاستخدام لا يمكن استخدام الفقاعات.
Notification.MediaStyle مخفية يتم إخفاء الإشعارات بهذا النمط. يدير نظام التشغيل Android Automotive OS تفاعلات واجهة المستخدم الخاصة بإشعارات الوسائط وتشغيلها.
Notification.MessagingStyle تم تغيير السلوك

تختلف الإشعارات بهذا النمط في ما يلي:

Notification.CarExtender

Notification.WearableExtender

لم يتم الاستخدام لا يمكن استخدام أدوات التمديد.

Notification.Action.Builder

يوضّح الجدول 3 التغييرات والقيود المفروضة على واجهة برمجة التطبيقات في فئة Notification.Action.Builder.

الجدول 3 تغييرات على الطرق العامة لـ Notification.Action.Builder

الطُرق العامة التأثير الوصف
الدوال الإنشائية العامة تم تغيير السلوك يتم تجاهل الرموز المحدّدة في أدوات الإنشاء العامة.
addRemoteInput تم تغيير السلوك للحدّ من تشتيت انتباه السائق، يدرج مساعد رقمي، مثل "مساعد Google"، الردّ على الرسالة نيابةً عن المستخدم. لا يمكن للمستخدمين كتابة الرسائل.
setAllowGeneratedReplies No-op ميزة "الرد الذكي" غير متاحة.