Notifications API ومعالجة الأذونات
اطلب أذونات الإشعارات في الوقت المناسب وأرسل إشعارات المتصفح من React
Notifications API ومعالجة الأذونات درس مجاني في React Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
خاصية Notification.permission
إن Notification.permission عبارة عن سلسلة نصية ثابتة تعكس حالة الإذن الحالية. ويمكن أن تكون "granted" (سمح المستخدم)، أو "denied" (حظر المستخدم)، أو "default" (لم يُطلب الإذن من قبل). تحقّق من هذه الخاصية قبل محاولة عرض الإشعارات لتجنب الأخطاء غير الضرورية.
طلب الإذن
يعيد Notification.requestPermission() وعدًا يُحلّ بسلسلة الإذن الجديدة. استدعِه استجابةً لإجراء واضح من المستخدم فقط، وليس عند تحميل الصفحة. تتجاهل المتصفحات طلبات الإذن التي تظهر فور التحميل أو تمنعها، وينزعج المستخدمون منها عندما تظهر بلا سياق.
أفضل ممارسة: الطلب عند إجراء المستخدم
يتمثل النمط الأكثر فاعلية في عرض مطالبة داخل التطبيق توضّح الفائدة، ثم إتاحة النقر للمستخدم على «تفعيل الإشعارات» قبل استدعاء requestPermission(). يوفّر ذلك سياقًا، ويزيد معدلات القبول، ويجنب المتصفح اعتبار موقعك مزعجًا. لا تطلب الإذن عند تحميل الصفحة مطلقًا.
إنشاء إشعار
ينشئ new Notification(title, options) إشعارًا للنظام ويعرضه. الوسيطة الأولى هي سلسلة عنوان الإشعار. أما كائن options فهو الوسيطة الثانية، ويقبل خصائص مثل body (النص أسفل العنوان)، وicon (عنوان URL للصورة)، وtag لمنع التكرار. لا يعمل ذلك إلا إذا كان الإذن "granted".
خيارات الإشعار
تشمل خيارات الإشعار الأساسية ما يلي: body للنص التوضيحي أسفل العنوان، وicon لصورة صغيرة، وbadge للأيقونة الصغيرة أحادية اللون المعروضة في منطقة إشعارات نظام التشغيل، وimage لصورة كبيرة مضمّنة، وtag لاستبدال إشعار سابق له الوسم نفسه، وrequireInteraction: true لإبقاء الإشعار حتى يتفاعل المستخدم معه.
أحداث الإشعار
يطلق مثيل Notification عدة أحداث: يُطلق onclick عند نقر المستخدم على الإشعار (استخدمه لتركيز النافذة والتنقل)، ويُطلق onclose عند إغلاق الإشعار، ويُطلق onerror عند حدوث مشكلة أثناء إنشائه. أرفق معالجات الأحداث بالمثيل المُعاد بعد استدعاء new Notification().
إغلاق الإشعارات برمجيًا
خزّن مثيل Notification المُعاد في متغير، واستدعِ notification.close() لإغلاقه برمجيًا. يفيد ذلك في الإشعارات الحساسة للوقت التي تصبح غير مهمة بعد مدة معينة. ادمجه مع setTimeout لإغلاق الإشعار تلقائيًا بعد بضع ثوانٍ.
متطلب HTTPS للإشعارات
يتطلب Notifications API سياقًا آمنًا. في صفحات HTTP، تكون نتيجة typeof Notification === 'undefined' أو تكون API معطّلة بالكامل، وذلك حسب المتصفح. هذا إجراء أمني لمنع المواقع الضارة من إغراق المستخدمين برسائل نظام مزيفة. تحقّق دائمًا من توفرها قبل استخدامها.
إنشاء hook باسم useNotifications
يمكن أن يوفّر hook باسم useNotifications دالتين: requestPermission() وshowNotification(title, options). ويتتبع داخليًا حالة الإذن الحالية ويحدّثها بعد طلب الإذن. تستدعي المكوّنات showNotification دون القلق بشأن التحقق من الإذن، لأن hook يتولى ذلك داخليًا.
الدمج مع Visibility API
توفّر Page Visibility API الخاصية document.hidden والحدث visibilitychange. تكون الإشعارات أكثر فائدة عندما لا يكون المستخدم يشاهد علامة التبويب حاليًا. تحقّق من document.hidden === true قبل عرض الإشعار لتجنب التنبيهات المكررة عندما تكون الصفحة في المقدمة بالفعل.
Service Workers وإشعارات الدفع
إن Notifications API الموضحة هنا مخصصة للإشعارات التي تطلقها الصفحة نفسها محليًا. أما إشعارات الدفع التي تصل حتى عند إغلاق الصفحة، فتحتاج إلى Push API مدمجة مع service worker. يستقبل service worker حدث الدفع ويستدعي self.registration.showNotification() في الخلفية.
قيم Notification.permission
أيّ مما يلي ليس قيمة صالحة لـ Notification.permission؟
مراجعة الدرس: Notifications API
يمكن أن تكون قيمة Notification.permission هي granted أو denied أو default. اطلب الإذن دائمًا استجابةً لإجراء من المستخدم، وليس عند تحميل الصفحة. استخدم new Notification(title, options) لإنشاء الإشعارات، وتعامل مع onclick لتركيز النافذة. ادمج ذلك مع Visibility API لعرض الإشعارات فقط عندما تكون علامة التبويب مخفية.
الأسئلة الشائعة
هل درس «Notifications API ومعالجة الأذونات» مجاني؟
نعم — نص درس «Notifications API ومعالجة الأذونات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «Notifications API ومعالجة الأذونات»؟
اطلب أذونات الإشعارات في الوقت المناسب وأرسل إشعارات المتصفح من React تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Notifications API ومعالجة الأذونات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Clipboard API: النسخ واللصق في React
- Geolocation API في مكوّنات React
- Notifications API ومعالجة الأذونات
- IntersectionObserver للتأثيرات المحفَّزة بالتمرير