حسناً، الأمر يبدو معقد بسبب التفكير في أكثر من شيء في وقت واحد
دائما أحب البساطة في الأمور، لذا لنقم بتقسيمها:
هل تحتاج فعلاً لإشعارات؟
بسبب الفيسبوك، أغلب العملاء صاروا يظنوا أن الاشعارات (بالجرس في الأعلى) صارت الطريقة الافتراضية لاخطار المستخدمين.
في الواقع، ليس أغلب المستخدمين سيدخلوا مواقع البيع والشراء بشكل يومي مثلما يدخلوا على الفيسبوك والتويتر، لذا خاصية الجرس ليست الأمثل.
بالعكس، ما زال الايميل يعتبر من أسهل الطرق للقيام بذلك.
مثلاً: حينما يوافق العميل على طلب الزبون في موقع بيع الكتروني بإمكانك وقتها (حينما تقوم بتحديث حالة الطلب في قاعدة البيانات)، ارسال ايميل للمستخدم لاخطاره بنجاح العملية وانتهى الأمر
ربما بالفعل تحتاج لاشعارات خصوصاً في الأنظمة التي مثل الفيسبوك، ويجب أن يعرفوا بذلك في قائمة موحدة.
ويوجد هنا بعض الأمور
1. عرض الإشعارات
تحتاج هنا فقط أن تقرر كيف تأتي الأشعارات؟
هل يقوم الأدمن بإضافاتها يدوياً ويرسلها للجميع؟ هل يرسلها لأشخاص محددين؟
أو هل يقوم النظام تلقائياً باضافة الاشعارات، مثلاً عند طلب الزبون يظهر للأدمن اشعار؟ أو مثلاً عند قبول الطلب يظهر للمستخدم اشعار؟
وقتها بإمكانك اضافة مودل للاشعارات مثل:
Notification
id
message
shown_users
فقط message تحتوي على الاشعار
و shown_users هي علاقة many to many فيها الأعضاء الذي رأوا هذا الاشعار من قبل.
وحينما يدخل اليوزر على الصفحة تقوم بعمل كويري (معقدة بعض الشيء) لطلب الاشعارات الخاصة باليوزر، وأيضاً يجب أن تعرف ما إذا كانت جميع الاشعارات مقروءة أم لا لكي تظهر الاشعار بالأعلى بلون مختلف (غير هكذا لا فائدة من الاشعارات)
2. عرض الاشعارات بدون تحديث الصفحة (Realtime Notifications)
هنا يكمن التحدي الحقيقي، لأن الأمر يتطلب بعض التعديلات على البرمجية لكي تظهر الاشعارات لليوزر بدون الحاجة لتحديث الصفحة.
الحل الأول الذي يخطر على بال الكثيرين هو استعمال الـ sockets، نعم هي جيدة ولكنها لا تكفي.
في أغلب الفريمورك يوجد خاصية socket، مثلا جانقو يوجد django sockets.
في رأيي الحل الأسهل (ليس الأرخص) هو استعمال خدمة جاهزة مثل OneSignal أو Firebase، هذا مثال للبايثون:
غالباً، أنت لا تحتاج realtime notifications…
أغلب المستخدمين لن يبقوا في موقع المتجر لمتابعة الاشعارات كما هو الحال مع المنتدى حيث يتشارك الناس الكثير من الأراء والردود
في حالتك، ربما الحل الأول يكفي بالإضافة لارسال الايميل