Skip to main content

مقدمة

lerix.notifications عميل مُهيكل لـ واجهة REST للإشعارات. من الإعدادات الشائعة Database Webhook في Supabase يستدعي دالة حافة، فترسل الإشعارات إلى المستخدمين المتأثرين بالتغيير.
يتطلّب الإرسال مفتاحاً خاصاً بصلاحية إرسال الإشعارات، يُنشأ من إعدادات المشروع في المشروع الذي يستخدمه تطبيقك. وهو ليس مفتاح الـ SDK. احفظه في سرّ (secret) للدالة، ولا تضعه أبداً في كود العميل.

الإعداد

يأخذ notifications.projectId افتراضياً قيمة projectId الخاصة بالـ SDK. اضبطه عندما تبلّغ دوالك عن أخطائها إلى مشروع ويكون تطبيق الهاتف في مشروع آخر.

مثال: إشعار عند شحن طلب

أنشئ Database Webhook على UPDATE في جدول orders يستدعي هذه الدالة:
supabase/functions/order-status-push/index.ts
externalUserIds هي معرّفات المستخدمين الخاصة بك، كما تمرّرها إلى setUser() في حزم SDK الخاصة بالعملاء. يصل إرسال واحد إلى كل جهاز سجّل فيه المستخدم دخوله، على كل منصة. راجع تعريف المستخدمين.

الإرسال

تحتوي النتيجة على notificationId. وفي الإرسال عبر externalUserIds تحتوي أيضاً على matchedUsers وmatchedDevices وunknownUserIds (مستخدمون ليس لديهم جهاز بعد، وهذا ليس خطأ).

التحديث وإلغاء الإرسال والإلغاء وحالة التسليم

تُلقي أخطاء الواجهة LerixApiException مع code وstatus القادمين من الخادم.

التحقق من الهوية

عندما يتطلّب المشروع التحقق من الهوية، يحتاج كل استدعاء لـ setUser() إلى identityHash يُحسب على خادمك. ودالة الحافة مكان مناسب لذلك:
القيمة هي HMAC-SHA256 لمعرّف المستخدم بصيغة hex بأحرف صغيرة، وهي القيمة نفسها التي تحسبها حزم SDK الخاصة بـ NestJS وPython و.NET. وهي غير متزامنة (async) هنا لأن Web Crypto كذلك.