إعداد تطبيق عميل "المراسلة عبر السحابة الإلكترونية من Firebase" على Flutter

اتّبِع الخطوات التالية لإعداد برنامج "المراسلة عبر السحابة الإلكترونية من Firebase" على Flutter.

الإعدادات والمتطلبات الخاصة بالمنصة

تعتمد بعض الخطوات المطلوبة على المنصة التي تستهدفها.

iOS+

تفعيل إمكانات التطبيق في Xcode

قبل أن يبدأ تطبيقك في تلقّي الرسائل، يجب تفعيل الإشعارات الفورية وأوضاع الخلفية في مشروع Xcode.

  1. افتح مساحة عمل مشروع Xcode (ios/Runner.xcworkspace).
  2. فعِّل الإشعارات الفورية.
  3. فعِّل الاسترداد في الخلفية والإشعارات عن بُعد وضعَي التنفيذ في الخلفية.

تحميل مفتاح مصادقة APNs

قبل استخدام خدمة "إشعارات Google من خادم Firebase"، حمِّل شهادة APNs إلى Firebase. إذا لم يكن لديك شهادة APNs، أنشئ شهادة في Apple Developer Member Center.

  1. داخل مشروعك في وحدة تحكّم Firebase، انقر على رمز الترس، ثم على إعدادات المشروع، ثم على علامة التبويب الرسائل عبر السحابة الإلكترونية.
  2. انقر على الزر تحميل شهادة لشهادة التطوير أو شهادة الإنتاج أو كليهما. يجب إدراج صورة واحدة على الأقل.
  3. لكل شهادة، اختَر ملف ‎.p12 وأدخِل كلمة المرور، إن وجدت. تأكَّد من أنّ رقم تعريف الحزمة لهذه الشهادة يتطابق مع رقم تعريف حزمة تطبيقك. انقر على حفظ.

طريقة التدوير

لاستخدام المكوِّن الإضافي لـ FCM Flutter على أجهزة Apple، يجب عدم إيقاف ميزة تحويل الأسلوب . إنّ عملية التبديل هذه مطلوبة، وبدونها، لا تعمل ميزات Firebase الرئيسية، مثل معالجة رمز مميّز لنظام إدارة الموافقة (FCM)، بشكلٍ صحيح.

Android

خدمات Google Play

تتطلّب عملاء FCM أجهزة تعمل بنظام التشغيل Android 4.4 أو إصدار أحدث تم تثبيت "خدمات Google Play" عليها أيضًا، أو جهاز محاكاة يعمل بنظام التشغيل Android 4.4 مع واجهات برمجة تطبيقات Google. تجدر الإشارة إلى أنّه يمكنك نشر تطبيقات Android من خلال "متجر Google Play" .

على التطبيقات التي تعتمد على حزمة تطوير البرامج (SDK) لـ "خدمات Play" التحقّق دائمًا من توفّر حزمة APK متوافقة من "خدمات Google Play" على الجهاز قبل الوصول إلى ميزات "خدمات Google Play". وننصحك بتنفيذ ذلك في موضعين: في onCreate() method للنشاط الرئيسي وفي onResume() method. يضمن التحقق في "onCreate()" أنّه لا يمكن استخدام التطبيق بدون إجراء عملية فحص ناجحة. يضمن التحقّق في onResume() أنّه في حال عودة المستخدم إلى التطبيق الذي يعمل من خلال بعض الوسائل الأخرى، مثل زر الرجوع، سيظلّ التحقّق من الصحة جاريًا.

إذا لم يكن الجهاز مزوّدًا بإصدار متوافق من "خدمات Google Play"، يمكن لتطبيقك الاتصال بـ GoogleApiAvailability.makeGooglePlayServicesAvailable() للسماح للمستخدمين بتنزيل "خدمات Google Play" من "متجر Play".

الويب

ضبط بيانات اعتماد الويب باستخدام "Firebase Cloud Messaging"

تستخدم واجهة الويب في خدمة المراسلة عبر السحابة الإلكترونية من Firebase بيانات اعتماد الويب المسماة "معرّف Voluntary Application Server " أو مفاتيح "VAPID"، وذلك لتفويض طلبات الإرسال إلى خدمات الدفع عبر الويب المتاحة. لاشتراك تطبيقك في الإشعارات الفورية، عليك ربط مفتاحَين بمشروعك على Firebase. يمكنك إنشاء مفتاحَي تشفير جديدَين أو استيراد مفتاحَي التشفير الحاليَين من خلال وحدة تحكُّم Firebase.

إنشاء مفتاحَي تشفير جديدَين
  1. افتح علامة التبويب المراسلة عبر السحابة الإلكترونية في لوحة الإعدادات في وحدة تحكّم Firebase وانتقِل إلى قسم ضبط الويب.

  2. في علامة التبويب شهادات Web Push، انقر على إنشاء مفتاحَي تشفير. وتعرِض وحدة التحكّم إشعارًا بأنّه تم إنشاء مفتاحَي التشفير، كما تعرِض سلسلة المفتاح العام وتاريخ الإضافة.

استيراد مفتاحَي تشفير حاليَين

إذا كان لديك مفتاحان حاليان تستخدمهما مع تطبيق الويب، يمكنك استيرادهما إلى "خدمة المراسلة عبر السحابة الإلكترونية من Firebase" حتى تتمكّن من الوصول إلى مثيلات تطبيق الويب الحالية من خلال واجهات برمجة تطبيقات "خدمة المراسلة عبر السحابة الإلكترونية من Firebase". لاستيراد المفاتيح، يجب أن يكون لديك إذن وصول على مستوى المالك إلى مشروع Firebase. استورِد المفتاحَين العام والخاص الحاليَين بتنسيق base64URL المشفّر الآمن:

  1. افتح علامة التبويب الرسائل عبر السحابة الإلكترونية في لوحة الإعدادات في وحدة تحكّم Firebase وانتقِل إلى قسم إعدادات الويب.

  2. في علامة التبويب شهادات Web Push، ابحث عن نص الرابط "استيراد زوج مفاتيح حالي" واختَره.

  3. في مربّع الحوار استيراد مفتاحَي تشفير، أدخِل مفتاحَي التشفير العام والخاص في الحقول المقابلة وانقر على استيراد. تعرِض وحدة التحكّم سلسلتَي المفتاح العام وتاريخ الإضافة.

لمزيد من المعلومات عن تنسيق المفاتيح وكيفية إنشائها، راجِع مفاتيح خادم التطبيقات.

تثبيت المكوّن الإضافي لـ FCM

  1. ثبِّت وفعِّل مكوّنات Firebase الإضافية لإطار عمل Flutter إذا لم يسبق لك إجراء ذلك.

  2. من جذر مشروع Flutter، شغِّل الأمر التالي لتثبيت المكوِّن الإضافي:

    flutter pub add firebase_messaging
    
  3. بعد الانتهاء، أعِد إنشاء تطبيق Flutter:

    flutter run
    

الوصول إلى الرمز المميّز للتسجيل

لإرسال رسالة إلى جهاز محدّد، عليك معرفة الرمز المميّز للتسجيل الخاص بهذا الجهاز. لأنّك ستحتاج إلى إدخال الرمز المميّز في حقل في وحدة التحكّم في الإشعارات لإكمال هذا الدليل التوجيهي، تأكَّد من نسخ الرمز المميّز أو تخزينه بأمان بعد استرجاعه.

لاسترداد الرمز المميّز للتسجيل الحالي لمثيل تطبيق، يمكنك طلب getToken(). في حال عدم منح إذن إرسال الإشعارات، ستطلب هذه الطريقة من المستخدم منح أذونات إرسال الإشعارات. بخلاف ذلك، يتم عرض رمز مميّز أو رفض المستقبل بسبب خطأ.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

على منصات الويب، نقْل مفتاح VAPID العام إلى getToken():

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

لتلقّي إشعارات عند تعديل الرمز المميّز، اشترِك في ساحة المشاركات onTokenRefresh:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

منع الإعداد التلقائي

عند إنشاء رمز تسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، تحمِّل المكتبة المعرّف وبيانات الضبط إلى Firebase. إذا كنت تفضّل منع توليد رمز مميّز تلقائيًا، أوقِف ميزة الإعداد التلقائي في وقت الإنشاء.

iOS

على أجهزة iOS، أضِف قيمة بيانات وصفية إلى Info.plist:

FirebaseMessagingAutoInitEnabled = NO

Android

على نظام التشغيل Android، أوقِف جمع البيانات في "إحصاءات Google" وإعداد FCM تلقائيًا (يجب إيقاف كليهما) من خلال إضافة قيم البيانات الوصفية التالية إلى AndroidManifest.xml:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

إعادة تفعيل ميزة "الإعداد التلقائي" لـ FCM في وقت التشغيل

لتفعيل ميزة "الإعداد التلقائي" لمثيل تطبيق معيّن، يمكنك الاتصال setAutoInitEnabled():

await FirebaseMessaging.instance.setAutoInitEnabled(true);

تظل هذه القيمة محفوظة عند إعادة تشغيل التطبيق بعد ضبطها.

الخطوات التالية

بعد إعداد تطبيق العميل، تكون مستعدًا لبدء إرسال الرسائل إلى قنوات الإصدار العلني باستخدام أداة إنشاء الإشعارات. راجِع إرسال رسالة اختبار إلى تطبيق في الخلفية.

لإضافة سلوك آخر أكثر تقدّمًا إلى تطبيقك، ستحتاج إلى تنفيذ خادم.

بعد ذلك، في برنامج تشغيل تطبيقك: