Skip to main content

لماذا تعرّف المستخدمين

معظم المنتجات تعمل على أكثر من منصة: تطبيق للجوال، وموقع ويب، وربما تطبيق لسطح المكتب. في Lerix تنتمي كلها إلى مشروع واحد بمفتاح API واحد. افتراضياً، كل تثبيت مجهول الهوية: الشخص الذي يستخدم تطبيقك على iOS وتطبيقك على جهاز Android اللوحي وموقعك يُحسب كثلاثة أجهزة لا علاقة بينها. عندما تخبر تطبيقاتك Lerix بمن سجّل الدخول، ترتبط هذه الأجهزة بمعرّف المستخدم الخاص بك، ويستطيع الباك إند الخاص بك الإرسال إلى هذا المعرّف بدلاً من جمع رموز الأجهزة:
طلب واحد يصل إلى user_123 على كل جهاز سجّل فيه دخوله، وعلى كل منصة (iOS وAndroid والويب وmacOS)، كلٌّ عبر مزوّد الإشعارات الخاص به.
  • سجلّ تثبيت واحد لكل جهاز. تُربط الأجهزة بالمستخدم ولا تُدمج أبداً، فيبقى السجل وحالة التسليم لكل جهاز على حدة.
  • أي عدد من الأجهزة لكل مستخدم. تسجيل الدخول على جهاز جديد يضيفه.
  • معرّفك أنت، لا معرّفنا. استخدم ما يعرّف المستخدم في نظامك: معرّف قاعدة بيانات، أو UUID، أو بريد إلكتروني (من 1 إلى 255 حرفاً). معرّف التثبيت الذي تُرجعه getUserId() قيمة مختلفة يولّدها Lerix ولا تتغير.

حدّد المستخدم بعد تسجيل الدخول

استدعِ setUser بمجرد تسجيل المستخدم دخوله، وclearUser عند تسجيل خروجه. يُحفظ المعرّف محلياً ويُرسَل مجدداً تلقائياً إذا أُعيد تسجيل التثبيت، لذا يكفي استدعاؤه مرة واحدة لكل تسجيل دخول. ويمكن استدعاؤه بأمان قبل أن تكتمل تهيئة الـ SDK. المعامل الثاني، identityHash، مطلوب فقط عند تفعيل التحقق من الهوية. اتركه حتى ذلك الحين.
لكل SDK نفس الاستدعاءين: setUser(externalId, identityHash?) وclearUser(). تأخذ حزم JavaScript قيمة الـ hash ككائن خيارات ({ identityHash })، بينما تأخذها البقية كمعامل مسمّى.
استدعِ clearUser() دائماً عند تسجيل الخروج. وإلا سيستمر الجهاز المشترك في تلقي إشعارات المستخدم السابق.

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

لا تحمل تطبيقاتك إلا مفتاح المشروع العام، لذا بدون التحقق يستطيع أي عميل استدعاء setUser بمعرّف شخص آخر وتلقي إشعاراته. التحقق من الهوية يسدّ هذه الثغرة: الباك إند الخاص بك، الذي يعرف أصلاً من سجّل الدخول، يوقّع المعرّف بسرّ لا يُضمَّن أبداً في أي تطبيق، ويرفض Lerix أي معرّف غير موقَّع. التحقق معطّل افتراضياً ليعمل setUser مباشرة. فعّله قبل الإطلاق في بيئة الإنتاج.
1

أنشئ سرّاً

في لوحة التحكم، افتح مشروعك ثم الإشعارات ← الإعدادات ← التحقق من الهوية، وأنشئ سرّاً. يُعرض السرّ مرة واحدة فقط: احفظه في مدير الأسرار في الباك إند الخاص بك (مثلاً باسم LERIX_IDENTITY_SECRET). إنشاء سرّ جديد لاحقاً يستبدل القديم، فتتوقف قيم الـ hash المحسوبة بالسرّ القديم عن العمل.
2

احسب الـ hash على خادمك

الـ hash هو HMAC-SHA256 لمعرّف المستخدم بصيغة hex بأحرف صغيرة، ومفتاحه هو السرّ كما هو تماماً (نص السرّ، وليس البايتات بعد فكّ ترميزها). أعِده إلى تطبيقك مع استجابة تسجيل الدخول، بجانب معرّف المستخدم.
3

مرّر الـ hash إلى setUser

حدّث تطبيقاتك لتمرّر الـ hash في identityHash. بمجرد وجود سرّ، يجب أن يكون أي hash مُرسَل صحيحاً حتى لو كان التحقق اختيارياً، فيظهر أي خطأ في إعداد الباك إند مبكراً.
4

اشترط الهوية الموثّقة

عندما ترسل كل إصدارات تطبيقاتك المستخدمة الـ hash، فعّل خيار Require verified identity (اشتراط الهوية الموثّقة) في نفس لوحة الإعدادات. بعدها يُرفض أي استدعاء لـ setUser بدون hash صالح.
لا تحسب الـ hash داخل تطبيقك أبداً، ولا تضمّن السرّ في تطبيق أو صفحة ويب: من يملكه يستطيع توقيع أي معرّف.

أخطاء setUser

أرسل إلى مستخدم

من الباك إند الخاص بك، أرسل باستخدام externalUserIds ومفتاح خاص في ترويسة lerix-key (راجع مقدمة الـ API):
201 Created
  • تحتوي unknownUserIds على المعرّفات التي لا يرتبط بها أي جهاز (مثلاً مستخدم لم يثبّت التطبيق بعد). وهذا ليس خطأ.
  • لا تجمع externalUserIds مع deviceTokens أو sendByTopic في نفس الطلب، فهذا يُرجع NOTIFICATION_TARGET_INVALID.
  • إذا جدولت الإرسال عبر sentAt، يُعاد البحث عن الأجهزة وقت الإرسال، فيصل الإشعار أيضاً إلى جهاز سجّل المستخدم دخوله عليه بعد الجدولة.
  • إذا لم تكن لإحدى المنصات مفاتيح إشعارات بعد (مثلاً لا يوجد مفتاح APNs)، تتلقى بقية الأجهزة الإشعار، ويظهر تسليم ذلك الجهاز بالرمز PLATFORM_NOT_CONFIGURED في حالة التسليم.
راجع إرسال إشعار لكل الحقول.