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

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

أوجه الاختلاف بين الإشعارات في السيارات

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

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

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

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

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

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

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

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

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

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle

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

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

لا يتوافق نظام التشغيل Android 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 للسيارات

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

أداة إنشاء الإشعارات

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

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

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

addAction()

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

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

لا بيئة RemoteViews ولا تتوفر طرق عرض المحتوى المخصص.

setBadgeIconType()

setNumber()

لا بيئة شارات الإشعارات غير متاحة.

setChronometerCountDown()

setUsesChronometer()

لا بيئة موقتات العد التنازلي غير متاحة.
setColorized() تم تغيير القيود

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

التطبيقات المحمية بامتيازات النظام: يتم ضبطها من خلال النظام الأساسي، ولا يُسمح بها تلقائيًا.

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

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

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

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

setVisibility()

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

الجدول 2. تغييرات على الصفوف المدمجة في Notification.Builder

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

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

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

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

Notification.CarExtender

Notification.WearableExtender

غير مستخدَم لا يمكن استخدام موسِّعات.

تطبيق Notification.Action.Builder

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

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

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