مقدمة
يُرسِل Lerix الإشعارات على iOS باستخدام Apple Push Notification service (APNs) مباشرةً — بدون الحاجة إلى Firebase. بعد إتمام تثبيت iOS، اتّبع الخطوات أدناه لتفعيل تسليم الإشعارات في تطبيقك.تأكّد من تهيئة الـ SDK عبر
Lerix.initialize() قبل إعداد الإشعارات.إعداد مصادقة APNs
تحتاج إلى حساب Apple Developer نشط لإرسال إشعارات على iOS.- في بوابة Apple Developer، اذهب إلى Certificates, Identifiers & Profiles → Keys.
- أنشئ مفتاحاً جديداً مع تفعيل Apple Push Notifications service (APNs).
- نزّل مفتاح المصادقة
.p8ولاحظ Key ID. يمكنك تنزيل المفتاح مرة واحدة فقط. - ارفع ملف
.p8إلى لوحة تحكم Lerix، ضمن الإشعارات ← الإعدادات. - في Certificates, Identifiers & Profiles → Identifiers، تأكّد من تفعيل خاصية Push Notifications على App ID الخاص بتطبيقك. هذا منفصل عن مفتاح
.p8أعلاه ومطلوب رغم أن مصادقة Lerix المعتمدة على الرمز (token-based) لا تحتاج شهادة لكل تطبيق — إذ ترفض APNs الإشعارات الموجّهة لـ App ID لا تملك سجلّاً له.
فعّل الخاصية في Xcode
أضف Push Notifications وBackground Modes → Remote notifications ضمن تبويب Signing & Capabilities لهدف تطبيقك (app target).إعداد AppDelegate
AppDelegate.swift
اطلب الإذن وراقِب الإشعارات
setOnNotificationTapped في مكان لديه وصول إلى مكدّس التنقّل (navigation) لديك، لأن الضغط على إشعار يعني غالباً الانتقال إلى شاشة محددة بناءً على payload.metadata، وليس مجرد تسجيله في السجلّات.
يصل الضغط (tap) بشكل موثوق حتى لو كان هو ما فتح التطبيق من حالة إغلاق كامل —
سجّل
setOnNotificationTapped فور ظهور الشاشة الرئيسية لتطبيقك، وأي ضغط حدث
قبل انتهاء تشغيل التطبيق يُعاد تشغيله تلقائياً بمجرد تسجيل الدالة.البيانات (Payload) المُستلَمة مع الإشعار
يستقبل كل منsetOnNotificationReceived وsetOnNotificationTapped كائناً من نوع LerixNotificationPayload:
معرّفات الجهاز
توجد ثلاث دوال مختلفة ترجع ثلاث قيم مختلفة — استخدم المناسبة حسب ما تفعله:nil حتى يُمنَح إذن الإشعارات ويكتمل التسجيل.
إرسال صوت مخصّص
اضبطsound عند إرسال إشعار — من تبويب إرسال إشعار في لوحة التحكم، أو معامل sound في REST API — لتشغيل ملف صوت مُرفق بدلاً من صوت الجهاز الافتراضي.
- يجب أن يكون الملف موجوداً بالفعل داخل حزمة تطبيقك — يمرّر Lerix اسم الملف فقط، ولا يستضيف أو يرفع ملفات الصوت.
- مرّر اسم الملف مع امتداده، مثل
sound.mp3(مدعوم أيضاً.wav/.caf).
إرسال بيانات وصفية (Metadata)
أرفق بيانات مخصّصة عبرmetadata (كائن JSON) عند الإرسال — من تبويب إرسال إشعار في لوحة التحكم، أو معامل metadata في REST API. تصل هذه البيانات إلى الجهاز داخل payload.metadata:
إرسال صورة
اضبطimageUrl عند إرسال إشعار — من تبويب إرسال إشعار في لوحة التحكم، أو معامل imageUrl في REST API — لعرض صورة غنية في الإشعار. لا تملك APNs حقل “صورة” أصلياً، لذا يتطلّب هذا خطوة إعداد لمرة واحدة:
- في Xcode: File → New → Target… → Notification Service Extension. سمِّه (مثلاً
NotificationServiceExtension). - انسخ ملف
NotificationServiceExtension/NotificationService.swiftمن الحزمة إلى الامتداد الجديد، مستبدلاً الملف المُولَّد تلقائياً. - ابنِ التطبيق وشغّله — لا حاجة لأي إعداد آخر. يضبط الباك إند تلقائياً علم
mutable-contentالخاص بـ APNs كلما حمل الإشعار قيمةimageUrl، وهذا ما يُشغّل الامتداد.
إذا لم يكن الامتداد مُعدّاً، يُتجاهَل
imageUrl بصمت — يظهر الإشعار بشكل طبيعي
بدون صورة، ولا يفشل الإرسال.payload.imageUrl (في setOnNotificationReceived/setOnNotificationTapped) إن أردت عرضها في شريط إشعار مخصّص داخل التطبيق، إضافة إلى عرضها الأصلي من النظام.
استهدف مستخدماً على كل أجهزته
إذا كان منتجك يعمل أيضاً على منصات أخرى (الويب أو الجوال أو سطح المكتب)، فأضِفها إلى نفس المشروع واربط كل تثبيت بمعرّف المستخدم الخاص بك بعد تسجيل الدخول. عندها يستطيع الباك إند الخاص بك الإرسال إلىexternalUserIds والوصول
إلى هذا الشخص على كل أجهزته في طلب واحد.
المواضيع (Topics)
بدلاً من استهداف رموز أجهزة محددة، يمكن للجهاز الاشتراك في موضوع (topic) باسم معيّن — أرسِل إشعاراً واحداً إلى الموضوع ليصل لكل مشترك فيه. لا حاجة لإنشاء الموضوع مسبقاً؛ يُنشأ تلقائياً أول مرة يشترك فيها أي جهاز. يمكنك أيضاً عرض المواضيع وإنشاءها وحذفها من تبويب الإشعارات ← المواضيع في لوحة التحكم.sendByTopic: true.