مقدمة
يُرسِل Lerix الإشعارات على Android باستخدام Firebase Cloud Messaging (FCM) — لكن خلافاً لتكامل FCM المعتاد، لن تحتاج لإضافة ملفgoogle-services.json أو إضافة Google Services Gradle plugin إلى تطبيقك. يسجّل الـ SDK جهازك داخلياً ضمن مشروع Firebase الخاص بـ Lerix، باستخدام معرّف Sender ID الخاص بمشروعك في Lerix (يُجلَب تلقائياً من الباك إند). بعد إتمام تثبيت Android، اتّبع الخطوات أدناه لتفعيل تسليم الإشعارات.
تأكّد من تهيئة الـ SDK عبر
Lerix.initialize() قبل إعداد الإشعارات.إعداد لوحة التحكم
لكي يتمكّن الباك إند من الإرسال فعلياً إلى أجهزتك، يحتاج إلى المصادقة كمشروع Firebase الخاص بك. هذه هي الخطوة الوحيدة المتعلّقة بـ Firebase:- أنشئ أو افتح تطبيقك في Firebase Console.
- اذهب إلى Project Settings → Service Accounts → Generate new private key.
- ارفع ملف JSON الذي تم تنزيله إلى لوحة تحكم Lerix، ضمن الإشعارات ← الإعدادات.
أذونات ومكوّنات الـ Manifest
لا حاجة لإضافة أي شيء هنا — يُصرِّح الـ Manifest الخاص بالـ SDK بالفعل عن أذوناتINTERNET وPOST_NOTIFICATIONS، وخدمة Firebase Messaging الخاصة به، ومستقبِل (receiver) الضغط على الإشعار. يدمج نظام دمج الـ Manifest في Android كل ذلك تلقائياً في تطبيقك؛ لا توجد خدمة أو مستقبِل أو إذن عليك التصريح عنه بنفسك.
اطلب الإذن وسجّل الجهاز
requestPermissions() هي suspend function — استدعِها من نطاق coroutine (مثلاً lifecycleScope.launch). على Android 13+ تطلب إذن POST_NOTIFICATIONS وقت التشغيل، وبمجرد منحه تجلب رمز FCM وتسجّله؛ أما على إصدارات Android الأقدم فلا يوجد إذن وقت تشغيل لطلبه، فتسجّل الجهاز فوراً.
سجّل setOnNotificationTapped في مكان لديه وصول إلى التنقّل (navigation) في تطبيقك، لأن الضغط على إشعار يعني غالباً الانتقال إلى شاشة محددة بناءً على payload.metadata، وليس مجرد تسجيله في السجلّات.
يصل الضغط (tap) بشكل موثوق حتى لو كان هو ما فتح التطبيق من حالة إغلاق كامل —
سجّل
setOnNotificationTapped فور بدء تشغيل نشاط (Activity) الإطلاق لديك،
وأي ضغط حدث قبل انتهاء تشغيل التطبيق يُعاد تشغيله تلقائياً بمجرد تسجيل
الدالة. استخدم Lerix.notifications.getInitialNotificationTap() إذا أردت
التحقّق منه بشكل متزامن بدلاً من ذلك.البيانات (Payload) المُستلَمة مع الإشعار
يستقبل كل منsetOnNotificationReceived وsetOnNotificationTapped كائناً من نوع LerixNotificationPayload:
معرّفات الجهاز
توجد ثلاث دوال مختلفة ترجع ثلاث قيم مختلفة — استخدم المناسبة حسب ما تفعله:null حتى يُمنَح إذن الإشعارات ويكتمل التسجيل.
إرسال صوت مخصّص
اضبطsound عند إرسال إشعار — من تبويب إرسال إشعار في لوحة التحكم، أو معامل sound في REST API — لتشغيل ملف صوت مُرفق بدلاً من صوت الجهاز الافتراضي.
- يجب أن يكون الملف موجوداً بالفعل داخل تطبيقك تحت
res/raw/— يمرّر Lerix اسم الملف فقط، ولا يستضيف أو يرفع ملفات الصوت. - مرّر اسم الملف دون امتداده، مثل
notifلملفres/raw/notif.mp3. الصيغ المدعومة:.wav،.mp3،.ogg.
يُثبَّت الصوت أول مرة يُستخدم فيها على جهاز معيّن — يُحدِّد Android صوت قناة
الإشعار (notification channel) عند إنشائها ولا يسمح بتغييره لاحقاً أبداً.
إرسال قيمة
sound مختلفة لاحقاً يُنشئ قناة جديدة بدلاً من تحديث القناة
القديمة؛ هذا سلوك متوقّع في Android، وليس خللاً.إرسال بيانات وصفية (Metadata)
أرفق بيانات مخصّصة عبرmetadata (كائن JSON) عند الإرسال — من تبويب إرسال إشعار في لوحة التحكم، أو معامل metadata في REST API. تصل هذه البيانات إلى الجهاز داخل payload.metadata:
إرسال صورة
اضبطimageUrl عند إرسال إشعار — من تبويب إرسال إشعار في لوحة التحكم، أو معامل imageUrl في REST API — لعرض صورة غنية في الإشعار. يعمل هذا تلقائياً على Android، دون أي إعداد إضافي: تُنزِّل خدمة المراسلة المُرفقة في الـ SDK الصورة وتعرضها كإشعار من نوع BigPictureStyle.
الصورة متاحة أيضاً في Kotlin كـ payload.imageUrl (في setOnNotificationReceived/setOnNotificationTapped) إن أردت عرضها في شريط إشعار مخصّص داخل التطبيق، إضافة إلى عرضها الأصلي من النظام.
استهدف مستخدماً على كل أجهزته
إذا كان منتجك يعمل أيضاً على منصات أخرى (الويب أو الجوال أو سطح المكتب)، فأضِفها إلى نفس المشروع واربط كل تثبيت بمعرّف المستخدم الخاص بك بعد تسجيل الدخول. عندها يستطيع الباك إند الخاص بك الإرسال إلىexternalUserIds والوصول
إلى هذا الشخص على كل أجهزته في طلب واحد.
المواضيع (Topics)
بدلاً من استهداف رموز أجهزة محددة، يمكن للجهاز الاشتراك في موضوع (topic) باسم معيّن — أرسِل إشعاراً واحداً إلى الموضوع ليصل لكل مشترك فيه. لا حاجة لإنشاء الموضوع مسبقاً؛ يُنشأ تلقائياً أول مرة يشترك فيها أي جهاز. يمكنك أيضاً عرض المواضيع وإنشاءها وحذفها من تبويب الإشعارات ← المواضيع في لوحة التحكم.sendByTopic: true.