1. مقدمة
مقارنةً بواجهة برمجة التطبيقات القديمة للمراسلة عبر السحابة الإلكترونية من Firebase، توفّر واجهة برمجة التطبيقات HTTP v1 للمراسلة عبر السحابة الإلكترونية من Firebase نموذجًا أكثر أمانًا لمنح الأذونات باستخدام رموز مميزة قصيرة الأمد للوصول. تختلف خطوات إنشاء رمز الدخول إلى الإصدار 1 من واجهة برمجة التطبيقات لمراسلة Firebase السحابية اختلافًا كبيرًا عن خطوات واجهة برمجة التطبيقات القديمة.
يوضّح لك هذا الدرس التطبيقي حول الترميز كيفية إعداد البرنامج والخادم لتفعيل إرسال الإشعارات الفورية إلى تطبيق Android باستخدام واجهة برمجة التطبيقات FCM HTTP v1. توضّح هذه المقالة الخطوة الرئيسية لإنشاء بيانات الاعتماد لواجهة برمجة التطبيقات الإصدار 1.
يمكنك الاطّلاع على مزيد من المعلومات على:
المتطلبات الأساسية
- فهم أساسي لتطوير Java وAndroid
أهداف الدورة التعليمية
- خطوات تفصيلية لإعداد كلّ من البرنامج والخادم من أجل تفعيل إرسال الإشعارات الفورية إلى تطبيق Android باستخدام واجهة برمجة التطبيقات FCM HTTP v1
- إنشاء بيانات اعتماد لواجهة برمجة التطبيقات HTTP الإصدار 1 باستخدام حسابات الخدمة
- إرسال رسائل اختبارية من خلال HTTP v1 API
المتطلبات
أحدث إصدار ثابت من "استوديو Android"
أحد الأجهزة التالية:
- جهاز Android فعلي متصل بجهاز الكمبيوتر
- محاكي Android (راجِع تشغيل التطبيقات على محاكي Android)
بيئة تطوير Java أو أداة تعديل الرموز من اختيارك
2. إعداد مشروع Firebase وتطبيق Android
في نهاية جلسة التدريب العملي، ستتمكّن من إرسال رسائل إلى تطبيقك باستخدام مراسلة Firebase السحابية. قبل إجراء ذلك، عليك إنشاء مشروع Firebase. يوفر هذا الدرس التطبيقي حول الترميز أيضًا تطبيق Android يحتوي على رمز نموذجي للتكامل مع مراسلة Firebase السحابية.
إعداد مشروع Firebase
- اتّبِع "الخطوة 1: إنشاء مشروع على Firebase" لإنشاء مشروعك الخاص على Firebase لهذا الدرس العملي.
إعداد تطبيق Android
تمّ دمج تطبيق Android التجريبي المقدَّم في هذا الدرس التطبيقي حول الترميز مع "مراسلة Firebase السحابية" (FCM). بعد البدء، سيتم التسجيل في خادم FCM والاشتراك في موضوع. في الخطوات اللاحقة من هذا الدرس التطبيقي حول الترميز، سترسل رسالة موضوع إلى الموضوع وسيتلقّاها تطبيقك.
- نزِّل نموذج التشغيل السريع على Android في Firebase.
- استورِد المشروع من https://github.com/firebase/quickstart-android/tree/master/messaging إلى "استوديو Android".
- سجِّل التطبيق في "وحدة تحكّم Firebase". اسم التطبيق هو
com.google.firebase.quickstart.fcm. سجِّل هذا التطبيق في مشروع Firebase باتّباع الخطوات الواردة في القسم "الخطوة 2: تسجيل تطبيقك في Firebase". - اتّبِع الجزء 1 من "الخطوة 3: إضافة ملف إعداد Firebase" لتنزيل
google-services.jsonوإضافته إلى مشروعك. إنشاء المشروع وتشغيله
3- إعداد خادم التطبيق
بعد إعداد تطبيقك، عليك تنزيل عينة تعليمات برمجية من جهة الخادم لإرسال الرسائل إلى تطبيقك باستخدام الإصدار 1 من واجهة برمجة التطبيقات FCM. تحمّل هذه التعليمة البرمجية بيانات اعتماد واجهة برمجة التطبيقات (الموضّحة في القسم التالي) لإنشاء رمز دخول. بعد ذلك، يتم إرسال رسالة إلى تطبيقك باستخدام ميزة المراسلة حسب الموضوع في "مراسلة Firebase السحابية".
- استورِد رمز الخادم المبدئي من خلال تنزيل مشروع Github. مشروع "المراسلة" هو مشروع Java يستند إلى Gradle ويتضمّن اعتمادية لحزمة تطوير البرامج (SDK) الخاصة بـ firebase-admin، والتي توفّر وظائف لإرسال الرسائل.
يمكنك العثور على مزيد من التفاصيل حول كيفية عمل خادم التطبيق مع مراسلة Firebase السحابية في المستند بيئة الخادم ومراسلة Firebase السحابية.
4. الحصول على بيانات اعتماد الإصدار 1
تستخدِم واجهة برمجة التطبيقات FCM HTTP v1 رموز الدخول القصيرة الأمد وفقًا لنموذج أمان OAuth2. مقارنةً بمفتاح واجهة برمجة التطبيقات الثابت المستخدَم في واجهة برمجة التطبيقات القديمة لمراسلة Firebase السحابية، يكون رمز الدخول القصير الأمد أقل عرضة لخطر تسرُّب بيانات الاعتماد. يوضّح هذا القسم بالتفصيل خطوات إنشاء بيانات اعتماد لإنشاء رمز الدخول المستخدَم في طلب البيانات من واجهة برمجة التطبيقات.
- إعداد حساب خدمة في Firebase للسماح لحزمة تطوير البرامج (SDK) للمشرف في Firebase بتفويض طلبات إلى واجهات برمجة التطبيقات في خدمة المراسلة عبر السحابة الإلكترونية (FCM) افتح إعدادات المشروع في "وحدة تحكّم Firebase" واختَر علامة التبويب حسابات الخدمة. انقر على إنشاء مفتاح خاص جديد لتنزيل مقتطف الإعدادات.

- في مشروع Github الذي تم تنزيله، أعِد تسمية الملف الذي تم تنزيله إلى
service-account.jsonوانسخه إلى مسارmessaging/الخاص بالمشروع. - تنشئ طريقة
getAccessToken()(الموضّحة أدناه) في الفئةMessaging.javaرمز OAuth2 صالحًا لمدة ساعة واحدة.
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
googleCredentials.refresh();
return googleCredentials.getAccessToken().getTokenValue();
}
- غيِّر الطريقة الرئيسية لإضافة السطر التالي:
public static void main(String[] args) throws IOException {
System.out.println(getAccessToken());
...
}
- انتقِل إلى دليل المراسلة أو المشروع في نافذة Terminal، واكتب ما يلي:
./gradlew run -Pmessage=common-message
لطباعة رمز OAuth2 المميز.
يمكنك الاطّلاع على مزيد من المعلومات في مقالة تفويض إرسال الطلبات.
5- إرسال رسالة باستخدام REST API
أنت الآن جاهز لإرسال رسالة من خلال الإصدار 1 من واجهة برمجة التطبيقات HTTP. اتبع الخطوات التالية:
- لإضافة رمز الدخول إلى عنوان طلب HTTP، اتّبِع الخطوات التالية:
- أضِف الرمز المميّز كقيمة لعنوان Authorization بالتنسيق
Authorization: Bearer <access_token> - أرسِل طلب HTTP إلى الإصدار 1 من واجهة برمجة التطبيقات FCM API باستخدام curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
يمكن العثور على $topic_name أعلاه في رمز تطبيق Android المذكور في مشروع Firebase وإعداد تطبيق Android. القيمة التلقائية هي "weather".
- بعد تسليم الرسالة بنجاح، من المفترض أن يظهر إشعار على شاشتك، على غرار الصورة أدناه:

6. الخاتمة
تهانينا! لقد أكملت الدرس التطبيقي حول الترميز بنجاح لتنفيذ ما يلي:
- إعداد مشروع Firebase
- دمج Firebase مع تطبيق Android
- إنشاء بيانات اعتماد للإصدار 1 من واجهة برمجة تطبيقات HTTP الخاصة بخدمة "المراسلة عبر السحابة الإلكترونية من Firebase"
- إرسال رسالة إلى تطبيقك من خلال الإصدار 1 من واجهة برمجة التطبيقات HTTP الخاصة بخدمة "مراسلة Firebase السحابية"
لاستكشاف الميزات المتقدّمة التي يوفّرها FCM، يمكنك الاستفادة من المراجع التالية: