دليل دمج نظام التنبيهات الشامل
يوضح هذا الدليل كيفية دمج نظام التنبيهات المتخصص في تطبيق الموبايل، حيث يغطي الأقسام الأربعة الرئيسية والإجراءات المرتبطة بها لضمان تجربة مستخدم سلسة وتفاعلية.
1. أقسام التنبيهات ونقاط الوصول (API Endpoints)
يتم تصنيف التنبيهات حسب الغرض منها. يمكن جلب البيانات لكل تبويب باستخدام الروابط المخصصة التالية:
النظام (System)
/api/v1/notifications/system
يحتوي على: المتابعات، الحظر، الطرد، وتنبيهات النظام الأساسية.
المكافآت (Reward)
/api/v1/notifications/reward
يحتوي على: هدايا التصنيف، مشتريات العضوية، والجوائز.
التشغيل (Operation)
/api/v1/notifications/operation
يحتوي على: رسائل الإدارة اليدوية والرسائل التشغيلية العامّة.
الفريق (Team)
/api/v1/notifications/team
يحتوي على: الاحتفالات بالوصول إلى المستويات الجديدة وإنجازات المجتمع.
2. مصفوفة الإجراءات (The Action Matrix)
عند النقر على التنبيه، يجب فحص حقل action لتحديد كيفية التنقل داخل التطبيق.
| مفتاح الإجراء (Key) | سلوك الواجهة (UI Behavior) | محتوى action_path |
|---|---|---|
user |
فتح الملف الشخصي | يحتوي على معرف المستخدم (User ID). |
room |
الانضمام للغرفة | يحتوي على الـ UID الخاص بالغرفة. |
url |
فتح رابط خارجي | يحتوي على رابط صالح (https://...). |
post |
فتح منشور/لحظة | يحتوي على معرف المنشور (Post ID). |
null |
تنبيه ثابت | لا يتطلب أي إجراء تنقل. |
3. معالجة البيانات الإضافية (Metadata Handling)
بالنسبة لتنبيهات "الفريق" أو التنبيهات المتقدمة، يوفر حقل metadata بيانات بتنسيق JSON لعرض واجهات غنية بالوسائط.
مثال لإنجاز رفع المستوى (Level Up):
{
"type": "team",
"metadata": {
"user": {
"id": 4,
"name": "User Name",
"image": "https://.../user.jpg"
},
"level": {
"order": 50,
"image": "https://.../celebration_art.png"
}
}
}
4. منطق التنفيذ (Implementation Logic)
مثال بلغة Dart لتطبيق Flutter يوضح كيفية التعامل مع ضغطة التنبيه:
void onNotificationTap(Map<String, dynamic> notification) {
final action = notification['action'];
final path = notification['action_path'];
if (action == 'user') {
Navigator.push(context, MaterialPageRoute(builder: (context) => ProfilePage(userId: path)));
} else if (action == 'room') {
JoinRoom(roomUid: path);
} else if (action == 'url') {
launchURL(path);
} else if (action == 'post') {
ViewPost(postId: path);
}
}
5. ملخص الحقول (Summary of Fields)
title: العنوان الوصفي (مثل: "تهانينا!").description: نص محتوى الرسالة.image_path: الأيقونة الرئيسية أو الصورة البديلة.metadata: بيانات غنية لتنسيقات العرض الخاصة.type: معرف القسم (Section Identifier).