تحدي الإشعارات
يبدو إرسال الإشعارات بسيطًا حتى تحتاج إلى إرسال ملايين منها بثبات. السرعة في التسليم، إدارة الأجهزة، الحد الأقصى للرسائل، و تفضيلات المستخدم جميعها مهمة عند العمل على نطاق واسع.
نظرة عامة على المعمارية
[حدث المُنشط] → [خدمة الإشعارات] → [قائمة الأوراق المرتقبة] → [العاملون في التسليم] → [APNs/FCM]إدارة الأجهزة
تتغير الأجهزة عندما يُعادة تثبيت المستخدم تطبيقًا أو يتحديث نظام التشغيل. نُحافظ على سجل الأجهزة مع إزالة الأجهزة التالفة تلقائيًا.
class إدارة_أجهزة_الإشعارات {
async سجل_أجهزة_الإشعارات(إسم_المستخدم, token, منصة) {
await هذا.البيانات.الأجهزة.إضاف( {
حيث: { token },
تحديث: { إسم_المستخدم, منصة, آخر_رؤية: new Date() },
إنشاء: { إسم_المستخدم, token, منصة, آخر_رؤية: new Date() }
});
}
async إزالة_أجهزة_الإشعارات(token) {
await هذا.البيانات.الأجهزة.حذف({ حيث: { token } });
}
}نظام قائمة الأوراق المرتقبة
| الاولوية | النوع | الهدف من التأخير |
|---|---|---|
| الاولوية العالية | الإشعارات الأمنية، رموز التحقق من الهوية | < 1 ثانية |
| الاولوية العالية | تحديثات الطلب، الرسائل | < 5 ثواني |
| الاولوية العادية | الإعلانات التسويقية، الإشعارات الإخبارية | < 30 ثانية |
| الاولوية المنخفضة | موجز الأسبوع، التوصيات | < ساعة واحدة |
حصر الرسائل وضبط الحد الأقصى
منع إرهاق المستخدمين من خلال حصر عدد الرسائل التي يتلقاها كل مستخدم في الساعة الواحدة. تختلف الحدود على حسب نوع الرسائل.
التحليلات وتبع التسليم
- تبع معدل التسليم (المرسلة مقابل المرسلة)
- قياس معدل الافتتاح وتنظيمه
- اختبار أ/B محتوى الإشعارات ووقت التسليم
- إدارة تفضيلات المستخدمين ووقت الصمت
أفضل الممارسات
تخصيص الإشعارات على أساس سلوك المستخدم، وليس فقط على أساس demographics. إرسال الإشعارات في الوقت المناسب لكل مستخدم في منطقة زمنية المستخدم ونمط نشاطه.