إشعارات Push هي رسائل يرسلها الخادم إلى جهاز محمول حتى عندما تكون التطبيق مغلقًا. وفقًا لـ Google Firebase، 2024، تتم معالجة إشعارات Push من خلال خدمات متخصصة — FCM على Android و APNS على iOS، والتي تدعم التوصيل في الوقت الحقيقي إلى ملايين الأجهزة في نفس الوقت. لقد أصبحت جزءًا لا يتجزأ من تجربة المستخدم في التطبيقات المحمولة الحديثة.
النقاط الرئيسية
إشعارات Push هي رسائل قصيرة يرسلها خادم التطبيق إلى جهاز المستخدم دون طلب صريح. تظهر على هيئة لوائح، شارات على الأيقونة أو إشارات صوتية، مما يجذب انتباه المستخدم إلى التطبيق ويعلمه بالأحداث المهمة.
تتكون إشعارات Push من عنوان، نص الرسالة وبيانات إضافية (payload). خلافًا لـ SMS، فإشعارات Push مجانية للمستخدم وتُوصل عبر بنية تحتية الخدمات السحابية — FCM لـ Android و APNS لـ iOS. الأهداف الرئيسية لإشعارات Push: زيادة المشاركة، الإعلام بالأحداث وإعادة المستخدم إلى التطبيق.
تظهر إحصائيات الاستخدام أن إشعارات Push المكوّنة بشكل صحيح تزيد معدل احتفاظ التطبيق بنسبة 30–60%. ولكن التكرار المفرط للإشعارات يؤدي إلى إلغاء الاشتراك — أكثر من 60% من المستخدمين يعطّلون الإشعارات إذا تم إرسالها أكثر من ثلاث مرات في اليوم.
يتضمن نظام Push ثلاثة مكوّنات: خادم التطبيق، خدمة المنصة (FCM/APNS) وتطبيق العميل على الجهاز. يرسل الخادم طلبًا إلى خدمة المنصة، التي تقوم بتوصيل الإشعار إلى الجهاز المستهدف عبر اتصال دائم مع نظام التشغيل.
تعتمد آلية التوصيل لإشعارات Push على اتصال دائم بين الجهاز وخدمة المنصة. يحافظ نظام التشغيل على قناة اتصال مشفّرة تمر عبرها جميع رسائل Push.
عند التشغيل الأول، يطلب التطبيق الإذن لإرسال الإشعارات ويتلقى رمز جهاز فريدًا من FCM أو APNS. هذا الرمز هو سلسلة يصل طولها إلى 4 كيلوبايت تُحدِد نسخة التطبيق بشكل فريد. يتغيّر الرمز عند إعادة تثبيت التطبيق أو استعادة الجهاز من نسخة احتياطية.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
يرسل خادم التطبيق طلب HTTP إلى API FCM أو API APNS، محددًا الرمز المستهدف، العنوان، النص والبيانات الإضافية. تستجيب خدمة المنصة بحالة التوصيل: ناجح، رمز غير صالح (أزال الجهاز التطبيق) أو تحديد المعدل (تجاوز تردد الإرسال).
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "رسالة جديدة",
body: "لديك إشعار جديد!"
}
})
})
يعتمد الاختيار بين FCM و APNS على المنصة المستهدفة. FCM تدعم Android و iOS، بينما APNS تدعم نظام Apple فقط. دعنا نتناول الاختلافات الرئيسية الهامة لتطوير التطبيقات المحمولة عبر المنصات.
FCM هي خدمة Google تعمل فوق Google Play Services. تدعم نموذجين للتوصيل: إشعارات عرض تلقائية وإشعارات بيانات يقوم التطبيق بمعالجتها نفسه. FCM مجانية ولا توجد قيود على عدد الرسائل المرسلة.
APNS هي خدمة Apple مع دعم لـ المرفقات المتعددة الوسائط (صور، فيديو، صوت) حتى 10 ميغابايت. يتطلب الإرسال عبر APNS شهادة TLS أو مفتاح مصادقة. تحد APNS تردد الإرسال إلى جهاز واحد — لا يزيد عن 150 إشعارًا في الدقيقة، بعدها يتم تفعيل تحديد المعدل.
| الخاصية | FCM | APNS |
|---|---|---|
| المنصات | Android، iOS، Web | iOS، macOS، watchOS |
| المتطلبات | Google Play Services | Apple Developer Program |
| الوسائط | حتى 4 كب (data) | حتى 10 مب (مرفقات) |
| الأولوية | normal/high | immediate/power-saving |
| التكلفة | مجاني | مجاني (يتطلب حسابًا) |
تُصنّف إشعارات Push حسب طريقة العرض والغرض. يساعد فهم الأنواع في اختيار الإستراتيجية المناسبة لكل سيناريو تفاعل مع المستخدم.
النوع الأكثر شيوعًا — إشعار معروض بعنوان ونص. يعرضه نظام التشغيل تلقائيًا في ظل الإشعارات، على شاشة القفل وكلافة. يمكن للمطور تكوين الصوت، الاهتزاز، شارة الأيقونة وأزرار الإجراء للإجراءات المباشرة (رد، فتح، رفض).
تحتوي إشعارات البيانات على بيانات فقط دون عرض مرئي. يقوم التطبيق بمعالجتها في الخلفية: مزامنة البيانات، تحديث الخبئة أو بدء التنزيل. على Android، تتم توصيل إشعارات البيانات بموثوقية؛ على iOS، فقط عندما يكون التطبيق نشطًا أو عبر background fetch.
تدعم أنظمة التشغيل المحمولة الحديثة الإشعارات الغنية والوسائطية بالصور، GIF، الفيديو والصوت. على iOS، يتم تنفيذ ذلك من خلال UNNotificationAttachment؛ على Android، من خلال BigPictureStyle و InboxStyle لتخصيص مظهر الإشعار في ظل النظام.
الإشعارات الصامتة لا تظهر للمستخدم وتستخدم للمزامنة في الخلفية. على iOS، لها أولوية عالية لمهام مثل تحديث البيانات قبل فتح التطبيق. يتعامل Android معها كإشعارات بيانات بأولوية دنيا.
يتطلب إعداد إشعارات Push إجراءات على مستوى البنية التحتية، الخادم وكود العميل. دعنا نستعرض العملية النموذجية لمشروع محمول عبر المنصات.
لـ Android، تحتاج إلى إنشاء مشروع في Firebase Console، إضافة google-services.json إلى المشروع وتكوين FirebaseMessagingService. يتم الحصول على رمز الجهاز من خلال FirebaseInstanceId أو FirebaseMessaging.getInstance().token، ثم يتم إرساله إلى الخادم عبر API عند التشغيل الأول أو عند تغييره.
لـ iOS، تحتاج إلى اشتراك Apple Developer Program، إنشاء شهادة Push أو مفتاح APNS في Developer Portal، وتفعيل إمكانية Push Notifications في Xcode. يتم تسجيل الإشعارات عبر UIApplication.shared.registerForRemoteNotifications مع استلام deviceToken في AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// إرسال token إلى خادمك
}
}
على جانب الخادم، تتم إشعارات Push إرسالها عبر REST API أو Admin SDK. تستخدم FCM Firebase Admin SDK (متاح لـ Node.js، Java، Python، Go)، بينما تستخدم APNS مكتبات pusher (pushy لـ Java، apn2 لـ Node.js). يوصى بتخزين الرموز في قاعدة بيانات مع خاتم زمني لآخر تحديث.
أمان إشعارات Push هو أمر حاسم، حيث يمكن نقل بيانات سرية عبرها. توفر كلتا المنصتين آليات حماية أساسية، ولكن يجب على المطور استخدامها بشكل صحيح.
قد يحتوي بيانات إشعار Push على بيانات شخصية للمستخدمين: الأسماء، مبالغ المعاملات، روابط الرسائل. حتى لو كانت قناة الاتصال بين FCM/APNS والجهاز مشفّرة، يمكن اعتراض البيانات على مستوى التطبيق عند اعتراض الإشعار بواسطة برنامج خارجي. يوصى بتشفير البيانات الحساسة على الخادم باستخدام AES-256 وفك تشفيرها على الجهاز باستخدام مفتاح مخزّن في Keychain (iOS) أو EncryptedSharedPreferences (Android).
رمز الجهاز هو معرّف جلسة يمكن اختراقه عند اختراق الجهاز أو اعتراض حركة المرور. يجب على خادم التطبيق التحقق من الرموز قبل الإرسال: مقارنتها بقاعدة البيانات، تتبع الرموز غير النشطة وإزالتها عند الأخطاء المتكررة InvalidToken. تعيد FCM و APNS حالة InvalidRegistration للرموز غير الصالحة — لا تتجاهلها.
بدون التحكم في التردد، قد تصبح إشعارات Push أداة سپام تزعج المستخدمين وتقلّل الاحتفاظ. حدد حدودًا على الخادم: لا يزيد عن 5 إشعارات في الساعة لمستخدم واحد ولا يزيد عن 3 رسائل متطابقة. للإشعارات المعاملاتية (تأكيد الطلب، تغيير كلمة المرور)، يمكن أن تكون الحدود أعلى — حتى 10 في الساعة، حيث أنها تحمل معلومات حاسمة بالغ الأهمية. استخدم تحديد المعدل على مستوى API الإرسال لكي لا يتمكن المهاجم من تشغيل إرسال جماعي عبر خادمك.
الأسئلة الشائعة
نعم، ولكن الاتصال المباشر بـ APNS غير مدعوم على Android — الأجهزة دون Google Play Services تستخدم بدائل مثل Huawei Mobile Services (HMS) واتصالات WebSocket خاصة. ولكن FCM تظل المعيار لمعظم التطبيقات بفضل مجانيتها وموثوقيتها.
تحتفظ FCM و APNS بـ آخر إشعار على خوادمهما وتقوم بتوصيله عند استعادة الاتصال. يخزن كل جهاز فقط آخر إشعار من كل تطبيق، لذا تفقد الرسائل الوسيطة أثناء انقطاع الشبكة المطول.
الأسباب الأكثر شيوعًا هي شهادة Push منتهية الصلاحية (صالحة لمدة سنة واحدة)، رمز جهاز غير صالح، إشعارات معطّلة في الإعدادات أو وضع توفير الطاقة مفعّل. تحقّق من الشهادة في Apple Developer Console وتأكّد من أن التطبيق يطلب الإذن عبر UNUserNotificationCenter.
على Android، استخدم PendingIntent في NotificationCompat.Builder مع تتبع الفتح عبر Intent. على iOS، استخدم طريقة UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). توفر FCM تقارير التوصيل والفتح لكل إشعار مرسل.
بشكل طفيف — إشعارات Push لا تحتفظ باتصال ثابت؛ يستخدم نظام التشغيل قناة نظام واحدة لجميع التطبيقات، مما يقلل استهلاك الطاقة الكلي. الإرسال المتكرر (كل 5 دقائق) يستهلك المزيد من الطاقة بسبب إيقاظ الجهاز من وضع السكون. تستهلك الإشعارات الصامتة على iOS مزيدًا من البطارية بسبب تنشيط التطبيق في الخلفية لمعالجة البيانات المستلمة.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا