إرسال رسالة اختبار إلى تطبيق في الخلفية

لبدء استخدام ميزة "المراسلة عبر السحابة الإلكترونية من Firebase"، عليك بناء أبسط حالة استخدام وهي: إرسال رسالة إشعار تجريبية من مؤلف الإشعارات إلى جهاز التطوير عندما يعمل التطبيق في الخلفية على الجهاز تعرض هذه الصفحة كل الخطوات اللازمة لتنفيذ ذلك، بدءًا من عملية الإعداد إلى إثبات ملكية الحساب. — قد يغطي الخطوات التي أكملتها بالفعل إذا إعداد تطبيق Flutter خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"

تثبيت المكوّن الإضافي لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase"

  1. تثبيت حِزم تطوير البرامج (SDK) لمنصة Firebase وإعدادها من أجل Flutter إذا لم تكن قد قمت بذلك بالفعل.

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

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

    flutter run
    

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

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

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

final fcmToken = await FirebaseMessaging.instance.getToken();

إرسال رسالة إشعار تجريبية

  1. ثبِّت التطبيق وشغِّله على الجهاز المستهدَف. على أجهزة Apple، ستحتاج إلى على قبول طلب الحصول على إذن بتلقي الإشعارات عن بُعد.

  2. تأكَّد من تشغيل التطبيق في الخلفية على الجهاز.

  3. في "وحدة تحكُّم Firebase"، افتح صفحة "المراسلة".

  4. إذا كانت هذه هي رسالتك الأولى، فحدد إنشاء رسالتك الأولى حملة.

    1. اختَر رسائل إشعارات Firebase ثم اختَر إنشاء.
  5. إذا لم يكن الأمر كذلك، اختَر حملة جديدة من علامة التبويب الحملات. ثم الإشعارات.

  6. أدخِل نص الرسالة. وجميع الحقول الأخرى اختيارية.

  7. اختَر إرسال رسالة اختبار من اللوحة على يسار الصفحة.

  8. في الحقل الذي يحمل عبارة إضافة الرمز المميّز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، أدخِل معلومات التسجيل الذي حصلت عليه في قسم سابق من هذا الدليل.

  9. اختَر اختبار.

بعد اختيار اختبار، جهاز العميل المستهدف (الذي يتضمن التطبيق في الخلفية) الإشعار.

للحصول على إحصاءات بشأن تسليم الرسائل إلى تطبيقك، يمكنك الاطّلاع على لوحة بيانات إعداد التقارير في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، الذي يسجّل عدد الرسائل المرسَلة وفتحها على أجهزة Apple وAndroid الأجهزة، إلى جانب بيانات "مرات الظهور" (الإشعارات التي اطّلع عليها المستخدمون) لـ تطبيقات Android

التعامل مع التفاعل

عندما ينقر المستخدمون على أحد الإشعارات، يتم ضبط السلوك التلقائي على أجهزة Android iOS هو فتح التطبيق. في حال إنهاء التطبيق، سيتم تشغيله، وإذا كانت تعمل في الخلفية، فسيتم إعادتها إلى المقدمة.

بناءً على محتوى الإشعار، قد ترغب في التعامل مع تفاعل المستخدم عند تثبيت التطبيق يفتح. على سبيل المثال، إذا تم إرسال رسالة محادثة جديدة باستخدام إشعار اختارها المستخدم، يمكنك فتح المحادثة المحددة عند فتح التطبيق.

توفِّر حزمة firebase-messaging طريقتَين للتعامل مع هذا التفاعل:

  1. getInitialMessage(): إذا تم فتح التطبيق ولم يتم إنهاؤه، ستعرض هذه الطريقة علامة Future تحتوي على RemoteMessage. وستتم إزالة RemoteMessage بعد استهلاكها.
  2. onMessageOpenedApp: عنصر Stream الذي ينشر RemoteMessage عند فتح التطبيق من حالة الخلفية.

لضمان تقديم تجربة سلسة للمستخدمين، يجب عليك التعامل مع كلا السيناريوهين. مثال الرمز البرمجي أدناه كيف يمكن تحقيق ذلك:

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

وتعتمد كيفية التعامل مع التفاعل على إعداد تطبيقك. المثال أعلاه مثالاً أساسيًا على استخدام StatefulWidget.

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

إرسال رسائل إلى التطبيقات التي تعمل في المقدّمة

بعد إرسال رسائل إشعارات بنجاح أثناء تشغيل التطبيق الخلفية، انظر تلقّي الرسائل في تطبيق Flutter لبدء الإرسال إلى التطبيقات التي تعمل في المقدّمة.

تجاوز رسائل الإشعارات

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

بعد ذلك، ضِمن برنامج تطبيقك: