بدءًا من الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، يجب تعيين كل الإشعارات إلى . يمكنك في كل قناة تعيين السلوك المرئي والسمعي على كل الإشعارات في هذه القناة يمكن للمستخدمين تغيير هذه الإعدادات وتحديد قنوات الإشعارات من تطبيقك التي يمكن أن تكون دخيلة أو مرئية.
شاهِد الفيديو التالي للحصول على نظرة عامة على القنوات والإشعارات الأخرى ميزات جديدة في Android 8.0.
تتوفّر إعدادات المستخدم لقنوات الإشعارات لكل تطبيق في إعدادات النظام، كما هو موضح في الشكل 1.
بعد إنشاء قناة للإشعارات، لن تتمكّن من تغيير إعداداتها. وسلوكياتهم. يتمتع المستخدم بالتحكم الكامل في هذه المرحلة. ومع ذلك، لا يزال بإمكانك تغيير اسم القناة ووصفها
أنشئ قناة لكل نوع من الإشعارات التي تحتاج إلى إرسالها. يمكنك أيضًا إنشاء قنوات إعلامية تعرض خيارات المستخدمين على سبيل المثال، إعداد قنوات إشعارات منفصلة لكل مجموعة محادثات ينشئها مستخدم في تطبيق مراسلة.
عندما تستهدف الإصدار 8.0 (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب تنفيذ إحدى
المزيد من قنوات الإشعارات. إذا تم ضبط targetSdkVersion
على 25 أو أقل،
عندما يعمل تطبيقك على الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يعمل التطبيق بالطريقة نفسها.
كما هو الحال على الأجهزة التي تعمل بنظام التشغيل Android 7.1 (المستوى 25 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم.
إنشاء قناة للإشعارات
لإنشاء قناة إشعارات، يُرجى اتّباع الخطوات التالية:
إنشاء كائن
NotificationChannel
معرّف قناة فريد واسم مرئي للمستخدم ومستوى أهميةبشكل اختياري، يمكنك تحديد الوصف الذي يظهر للمستخدم في إعدادات النظام. مع
setDescription()
تسجيل قناة الإشعارات من خلال تمريرها إلى
createNotificationChannel()
يوضّح المثال التالي كيفية إنشاء قناة إشعارات وتسجيلها:
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_DEFAULT val mChannel = NotificationChannel(CHANNEL_ID, name, importance) mChannel.description = descriptionText // Register the channel with the system. You can't change the importance // or other notification behaviors after this. val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel) }
Java
private void createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); channel.setDescription(description); // Register the channel with the system. You can't change the importance // or other notification behaviors after this. NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } }
لا تؤدي إعادة إنشاء قناة إشعارات حالية بقيمها الأصلية العملية، لذا من الآمن استدعاء هذا الرمز عند بدء تشغيل أي تطبيق.
وبشكل افتراضي، تستخدم كل الإشعارات التي يتم نشرها على قناة معينة
السلوكيات السمعية المحددة من خلال مستوى الأهمية من
NotificationManagerCompat
الفئة، مثل
IMPORTANCE_DEFAULT
أو
IMPORTANCE_HIGH
راجِع القسم التالي للحصول على مزيد من المعلومات حول:
مستويات الأهمية.
إذا أردت تخصيص سلوكيات الإشعارات التلقائية في قناتك بشكل أكبر،
يمكنك استدعاء طرق مثل
enableLights()
،
setLightColor()
,
أو
setVibrationPattern()
في NotificationChannel
. تذكر أنه بعد إنشاء القناة،
لا يمكنه تغيير هذه الإعدادات، وستكون لدى المستخدم إمكانية التحكم النهائي في ما إذا كانت هذه
نشطة.
ويمكنك أيضًا إنشاء قنوات متعددة للإشعارات في عملية واحدة من خلال
يتصل
createNotificationChannels()
ضبط مستوى الأهمية
تؤثر أهمية القناة في مستوى انقطاع جميع الإشعارات المنشورة
القناة. حدده في الدالة الإنشائية NotificationChannel
، باستخدام أحد
خمسة مستويات للأهمية، تتراوح من
IMPORTANCE_NONE(0)
إلى
IMPORTANCE_HIGH(4)
لدعم الأجهزة التي تعمل بالإصدار 7.1 من نظام التشغيل Android (المستوى 25 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم، عليك أيضًا:
مكالمة
setPriority()
لكل إشعار، باستخدام ثابت أولوية من
NotificationCompat
الصف.
الأهمية (NotificationManager.IMPORTANCE_*
) والأولوية
(NotificationCompat.PRIORITY_*
) ترتبط الثوابت بالأهمية المرئية للمستخدم
كما هو موضح في الجدول التالي.
مستوى الأهمية المرئي للمستخدم | الأهمية (Android 8.0 والإصدارات الأحدث) | الأولوية (الإصدار 7.1 من نظام التشغيل Android والإصدارات الأقدم) |
---|---|---|
عاجل يصدر هذا الإجراء صوتًا ويظهر كإشعار تنبيهي. |
IMPORTANCE_HIGH |
PRIORITY_HIGH أو PRIORITY_MAX |
مرتفعة تصدر تنبيهًا صوتيًا. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
متوسطة لا يتم إصدار صوت. |
IMPORTANCE_LOW |
PRIORITY_LOW |
منخفض لا يصدر أي صوت ولا يظهر في شريط الحالة. |
IMPORTANCE_MIN |
PRIORITY_MIN |
بدون صوت لا يتم إصدار أي صوت ولا يظهر في شريط الحالة أو الظل. |
IMPORTANCE_NONE |
N/A |
تظهر جميع الإشعارات في نظام لا يقاطع مصادر الإزعاج، بغض النظر عن أهميتها. مواقع واجهة المستخدم، مثل درج الإشعارات شارة على رمز مشغّل التطبيقات، رغم أنه يمكنك تعديل مظهر شارة الإشعار.
بعد إرسال القناة إلى
NotificationManager
، أنت
لا يمكنك تغيير مستوى الأهمية. ومع ذلك، يمكن للمستخدم تغيير
والتفضيلات لقنوات تطبيقك في أي وقت.
للحصول على معلومات حول اختيار مستوى أولوية مناسب، اطلع على "الأولوية المستويات" في دليل تصميم الإشعارات
قراءة إعدادات قناة الإشعارات
يمكن للمستخدمين تعديل إعدادات قنوات الإشعارات، بما في ذلك السلوكيات مثل الاهتزاز وصوت التنبيه إذا كنت تريد معرفة الإعدادات التي سيستخدمها على قنوات الإشعارات، اتّبِع الخطوات التالية:
الحصول على عنصر
NotificationChannel
من خلال استدعاءgetNotificationChannel()
أوgetNotificationChannels()
الاستعلام عن إعدادات القناة المحدّدة، مثل
getVibrationPattern()
،getSound()
وgetImportance()
إذا رصدت إعدادًا في القناة تعتقد أنّه يحظر السلوك المقصود عن تطبيقك، يمكنك أن تقترح على المستخدم تغييره واتخاذ إجراء افتح إعدادات القناة، كما هو موضّح في القسم التالي.
فتح إعدادات قناة الإشعارات
بعد إنشاء قناة للإشعارات، لن تتمكّن من تغيير إعداداتها. السلوكيات المرئية والسمعية لقناتك بشكل آلي. يمكن للمستخدم وحده تغيير سلوكيات القناة من إعدادات النظام تزويد المستخدمين وسهولة الدخول إلى إعدادات الإشعارات هذه، أضف عنصرًا في واجهة مستخدم الإعدادات التي تفتح إعدادات النظام هذه.
يمكنك فتح إعدادات النظام لقنوات الإشعارات باستخدام
Intent
الذي يستخدم
ACTION_CHANNEL_NOTIFICATION_SETTINGS
اتخاذ القرار.
على سبيل المثال، يوضح نموذج الرمز التالي كيفية إعادة توجيه أحد المستخدمين إلى إعدادات قناة الإشعارات:
Kotlin
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()) } startActivity(intent)
Java
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()); startActivity(intent);
يُرجى ملاحظة أنّ الغرض من هذا الإجراء استخدام عنصرين إضافيَّين يحددان اسم حزمة التطبيق. (المعروفة أيضًا باسم معرّف التطبيق) والقناة المطلوب تعديلها.
حذف قناة الإشعارات
يمكنك حذف قنوات الإشعارات من خلال الاتصال
deleteNotificationChannel()
يوضح الرمز النموذجي التالي كيفية إكمال هذه العملية:
Kotlin
// The id of the channel. val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val id: String = "my_channel_01" notificationManager.deleteNotificationChannel(id)
Java
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "my_channel_01"; notificationManager.deleteNotificationChannel(id);
إنشاء مجموعة قنوات للإشعارات
إذا أردت تنظيم مظهر قنواتك في واجهة مستخدم الإعدادات، يمكنك إنشاء مجموعات قنوات هذه فكرة جيدة عندما يدعم تطبيقك حسابات مستخدمين متعددة، مثل الملفات الشخصية للعمل، لأنها تتيح لك إنشاء مجموعة قنوات للإشعارات لكل حساب. بهذه الطريقة، يمكن للمستخدمين تحديد والتحكم في عدة قنوات إشعارات تحمل أسماء متطابقة.
على سبيل المثال، قد يتضمن تطبيق الشبكات الاجتماعية دعمًا للبيانات الشخصية والعمل الحسابات. في هذا السيناريو، قد يتطلب كل حساب إشعارات متعددة قنوات لها وظائف وأسماء متطابقة، مثل ما يلي:
حساب شخصي مع قناتين:
تعليقات جديدة
اقتراحات بشأن المشاركات
حساب أعمال بقناتَين:
تعليقات جديدة
اقتراحات بشأن المشاركات
يتيح تنظيم قنوات الإشعارات في مجموعات لكل حساب للمستخدمين التمييز بينهما.
تتطلّب كل مجموعة قنوات للإشعارات معرّفًا فريدًا يجب أن يكون فريدًا ضمن بالإضافة إلى اسم مرئي للمستخدم. يوضح المقتطف التالي كيف لإنشاء مجموعة قنوات للإشعارات
Kotlin
// The id of the group. val groupId = "my_group_01" // The user-visible name of the group. val groupName = getString(R.string.group_name) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))
Java
// The id of the group. String groupId = "my_group_01"; // The user-visible name of the group. CharSequence groupName = getString(R.string.group_name); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));
بعد إنشاء مجموعة جديدة، يمكنك الاتصال
setGroup()
لربط كائن NotificationChannel
جديد بالمجموعة.
بعد إرسال القناة إلى مدير الإشعارات، لن تتمكّن من تغيير ارتباطًا بين قناة الإشعار والمجموعة.