الأدلة

كيفية إضافة الإشعارات إلى تطبيقك: داخل التطبيق والبريد الإلكتروني والإشعارات الفورية

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

يقارن هذا الدليل بين القنوات، ويعرض بنية بسيطة، ويقدم مطالبات يمكنك استخدامها مع منشئ تطبيقات بالذكاء الاصطناعي.

أهم القنوات مقارنة

القناةتصل إلى المستخدمين عندماجهد الإعدادالتكلفة التشغيليةالأنسب لـ
داخل التطبيق (جرس، إشعارات منبثقة)يكونون يستخدمون تطبيقكمنخفضلا شيء سوى قاعدة بياناتكالنشاط، والإشارات (mentions)، وتغييرات الحالة
البريد الإلكترونيفي أي وقت يتفقدون فيه بريدهممتوسط: مزوّد، وإعداد النطاقتسعير لكل رسالة من مزوّدكالإيصالات، والملخصات، وكل ما هو مهم
الإشعارات الفورية للويبفي المتصفح أو تطبيق الويب المثبت، حتى عند إغلاقهمتوسط إلى عالٍغالباً مجاني للإرسالالتنبيهات الحساسة للوقت
الرسائل النصية SMSتقريباً دائماًمتوسط؛ وتنطبق قواعد الموافقةرسوم لكل رسالةتذكيرات المواعيد، والتنبيهات العاجلة
أدوات المحادثة (Slack، Teams)يكونون في العملمنخفض إلى متوسطغالباً مجانيالأدوات الداخلية وتنبيهات الفريق

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

كيف يتناسب نظام الإشعارات معاً

اجعله بسيطاً ومركزياً:

  1. يحدث شيء ما. يُنشر تعليق، أو يفشل دفع، أو يكون الحجز غداً.
  2. يستدعي خادمك دالة واحدة، مثل notify(user, type, data).
  3. تتحقق هذه الدالة من تفضيلات المستخدم وتكتب صفاً في جدول notifications (للجرس).
  4. ثم ترسل إلى القنوات الأخرى التي فعّلها المستخدم لذلك النوع: البريد عبر مزوّدك، والإشعارات الفورية عبر واجهة Push API.
  5. تعرض الواجهة الأمامية الإشعارات غير المقروءة وتعلّمها مقروءة عند فتحها.

نقطة الدخول الواحدة تعني أنه يمكنك إضافة قناة، أو تغيير الصياغة، أو احترام التفضيلات، دون البحث في كل الكود.

ما الذي يجب تخزينه

يحتاج جدول الإشعارات عادةً إلى: معرّف المستخدم، والنوع (مثل comment_reply)، وعنوان قصير ونص، ورابط للصفحة المعنية، ووقت الإنشاء، ووقت القراءة. ويخزّن جدول تفضيلات منفصل القنوات التي يريدها كل مستخدم لكل نوع.

عرض الإشعارات الجديدة

  • التحميل عند عرض الصفحة مع الاستطلاع (polling) كل 30 إلى 60 ثانية. بسيط وموثوق.
  • التحديث الفوري عبر WebSockets أو server-sent events يبدو فورياً لكنه يضيف أجزاء متحركة. ابدأ بالاستطلاع ما لم تكن التحديثات الفورية مهمة.

إشعارات البريد الإلكتروني

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

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

إشعارات الويب الفورية

تتيح الإشعارات الفورية للويب لموقعك إرسال تنبيهات تظهر كإشعارات التطبيقات. وبحسب وثائق MDN عن Push API، تعمل كالتالي:

  1. يسجّل موقعك عامل خدمة (service worker)، وهو نص يستطيع المتصفح تشغيله في الخلفية.
  2. بعد موافقة المستخدم، يشترك عامل الخدمة عبر PushManager.subscribe(). ويعيد المتصفح اشتراكاً يحتوي على نقطة نهاية ومفاتيح تشفير.
  3. يخزّن خادمك هذا الاشتراك، وعند حدوث شيء ما يرسل رسالة إلى نقطة النهاية، وغالباً موقعة بمفاتيح VAPID (زوج مفاتيح يحدد هوية خادمك).
  4. يشغّل المتصفح عامل الخدمة الخاص بك، فيعرض الإشعار حتى لو لم تكن صفحتك مفتوحة.

تنبّه MDN أيضاً إلى أن نقطة النهاية يجب أن تبقى سرية، لأن معرفتها تكفي لإرسال رسائل إلى ذلك المستخدم.

iPhone وiPad

أضافت WebKit الإشعارات الفورية للويب لتطبيقات الويب في iOS وiPadOS 16.4، بشرطين حسب إعلانها: يجب إضافة الموقع إلى الشاشة الرئيسية، ويجب طلب الإذن استجابةً لفعل من المستخدم مثل النقر على زر الاشتراك. لذا على iPhone، لا تصل الإشعارات الفورية إلا للمستخدمين الذين ثبّتوا تطبيق الويب الخاص بك. انظر التطبيقات الأصلية مقابل تطبيقات الويب التقدمية لمعرفة ما يعنيه تثبيت تطبيق ويب.

طلب الإذن بالشكل الصحيح

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

الإشعارات المجدولة تحتاج إلى محفّز

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

مطالبات تقدمها لمنشئ التطبيقات بالذكاء الاصطناعي

ابدأ بالإشعارات داخل التطبيق:

أضف إشعارات داخل التطبيق. أنشئ جدول notifications (المستخدم، النوع، العنوان، النص، الرابط، created_at، read_at). أضف دالة خادم notify(userId, type, data) تستدعيها كل الميزات. أظهر أيقونة جرس في الترويسة بعداد للعناصر غير المقروءة، وقائمة منسدلة لآخر 20 إشعاراً، وزر "تحديد الكل كمقروء". استطلِع وجود إشعارات جديدة كل 60 ثانية.

ثم التفضيلات والبريد الإلكتروني:

أضف إعدادات الإشعارات: لكل نوع (ردود التعليقات، والإشارات، والفوترة)، دع المستخدم يختار داخل التطبيق، أو بريد، أو كليهما، أو لا شيء. يجب أن تحترم notify() هذه الإعدادات. أرسل البريد عبر [PROVIDER] باستخدام السر [ENV_NAME] على الخادم فقط. اجمع رسائل بريد التعليقات بحيث لا يتلقى المستخدم أكثر من رسالة واحدة كل 15 دقيقة.

ثم الإشعارات الفورية، إن احتجتها:

أضف الإشعارات الفورية للويب كخيار. سجّل عامل خدمة، وأنشئ مفاتيح VAPID، واحفظ المفتاح الخاص كسر. أضف زر "تفعيل الإشعارات" في الإعدادات يطلب الإذن عند النقر فقط. خزّن كل اشتراك لكل مستخدم وجهاز، وأرسل الإشعارات الفورية من notify() عندما يكون المستخدم قد اختار ذلك، واحذف الاشتراكات التي يبلغ خدمة الإرسال بأنها منتهية.

أخطاء شائعة

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

قائمة التحقق

  • دالة notify() واحدة على الخادم تُستخدم في كل مكان
  • جدول إشعارات يتضمن حالة القراءة، وجرس يعرض عداد غير المقروء
  • تفضيلات قنوات لكل نوع، تحترمها notify()
  • البريد يُرسل من الخادم بنطاق موثّق؛ وملخص أو تجميع للأحداث المتكررة
  • إذن الإشعارات الفورية يُطلب فقط بعد فعل من المستخدم، مع شرح
  • الإشعارات الفورية مختبرة على الحاسوب وعلى iPhone بعد إضافة التطبيق إلى الشاشة الرئيسية
  • إزالة الاشتراكات المنتهية للإشعارات الفورية
  • لا يوجد محتوى حساس في معاينات الإشعارات الفورية أو البريد
  • للتذكيرات المجدولة محفّز موثوق

الإشعارات في Mythex

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

الأسئلة

ما أسهل نوع إشعارات يمكن إضافته إلى تطبيق ويب؟

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

هل يستطيع تطبيق ويب إرسال إشعارات فورية إلى أجهزة iPhone؟

نعم، ولكن بقيود. أضافت WebKit الإشعارات الفورية للويب لتطبيقات الويب المثبتة على الشاشة الرئيسية في iOS وiPadOS 16.4، لذا يجب أن يضيف المستخدم تطبيق الويب الخاص بك إلى شاشته الرئيسية أولاً، ويجب طلب الإذن بعد نقرة، مثل نقرة على زر الاشتراك.

هل تعمل الإشعارات الفورية عندما يكون الموقع مغلقاً؟

نعم. تُسلّم واجهة Push الرسائل إلى عامل الخدمة (service worker) في موقعك، ويشغّله المتصفح عند وصول رسالة، لذا لا يلزم أن تكون الصفحة مفتوحة. ويجب أن يكون المستخدم قد منح الإذن أولاً.

كيف أمنع الإشعارات من إزعاج المستخدمين؟

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

Mythex · Pricing · ابنِ أي شيء بالذكاء الاصطناعي · قوالب المواقع والتطبيقات · مقارنات Mythex · مصطلحات بناء التطبيقات بالذكاء الاصطناعي · أدوات مجانية لبناء التطبيقات بالذكاء الاصطناعي · English

English አማርኛ Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)