شارك المقالة
دمج Android Flavors مع Flutter: خطوات سهلة لربط تطبيقاتك

كيفيه ارسال الاشعارات لتطبيقك من Firebase بالطريقه الجديده (Flutter & Android & IOS) – send notification fcm

تعرف على النظام الجديد لإرسال الإشعارات في فايربيز – send notification fcm (HTTP v1) ولماذا هو الأفضل للمطورين

إرسال الإشعارات اليوم صار أكثر أمانًا وتنظيمًا بفضل انتقال Firebase Cloud Messaging إلى HTTP v1 API بدل Legacy API. في هذا الدليل الحصري سأشرح لك خطوة-بخطوة كيفية إرسال إشعار من النوع topic باستخدام سكربت Node.js (مثال كامل مرفق)، وكيفية عمل نفس العملية من Postman، بالإضافة لنقاط مهمة متعلقة بـ FCM Flutter واشتراك التطبيق في الـ topic


لماذا HTTP v1؟

النسخة الجديدة (HTTP v1) تستخدم OAuth 2.0 Access Token بدل Server Key الثابت. الفائدة:

أمان أعلى (توكن مؤقت وليس مفتاح ثابت).

تكامل مع Google Cloud IAM.

بنية رسالة أكثر مرونة (تدعم apns/android/data بالإضافة إلى notification).

لكن التغيير يتطلب توليد توكن عبر Service Account JSON ووضع بنية message صحيحة (مثلاً لا تستخدم to كما كان في Legacy بل message.topic أو message.token).


المتطلبات الأساسية للتعامل مع الاشعارات

حساب Firebase ومشروع مفعل.

Service Account JSON (حمّلته من Firebase Console → Project Settings → Service accounts → Generate new private key).

تفعيل Firebase Cloud Messaging API من Google Cloud Console (APIs & Services → Library).

جهاز لتشغيل Node.js أو Postman.

تطبيق Flutter يشتري topic (لجزء FCM Flutter).


إرسال Topic Notification

import { GoogleAuth } from 'google-auth-library';
import fetch from 'node-fetch';
import fs from 'fs';

async function sendTopicNotification() {
  const credentials = JSON.parse(fs.readFileSync('path json file', 'utf8'));

  const auth = new GoogleAuth({
    credentials,
    scopes: ['https://www.googleapis.com/auth/firebase.messaging'],
  });

  const client = await auth.getClient();
  const token = await client.getAccessToken();

  const projectId = credentials.project_id;

  const body = {
    message: {
      topic: "SRM",
      notification: {
        title: "تحديث جديد 💸",
        body: "قم بتحديث التطبيق الآن للاستمتاع بالمميزات الجديدة"
      },
      data: {
        url: "https://www.geecoders.com",
        id_app: "com.geecoders.geecoders"
      },
      apns: {
        payload: {
          aps: {
            sound: "Tri-tone",
            "mutable-content": 1
          }
        }
      }
    }
  };

  const response = await fetch(`https://fcm.googleapis.com/v1/projects/${projectId}/messages:send`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token.token}`,
      'Content-Type': 'application/json; UTF-8'
    },
    body: JSON.stringify(body)
  });

  const result = await response.json();
  console.log("Response from FCM:", result);
  console.log("projectId ===:", projectId);
  console.log("token ===:", token.token);
}

sendTopicNotification().catch(console.error);

شرح كيفيه التنفيذ داخل السكربت
يقرأ ملف software-m.json ويحصل منه على project_id وبيانات الاعتماد.
يستخدم google-auth-library لتكوين عميل OAuth والحصول على access_token.
يبني جسم الرسالة وفق بنية HTTP v1: حقل message يحتوي topic, notification, data, وapns (لـ iOS).

ملاحظات تنفيذية عن Node:
إذا استعملت node-fetch إصدار حديث (ESM) فتأكد من تشغيل الملف كـ ES Module (غَيِّر اسم الملف إلى .mjs أو ضع “type”: “module” في package.json).
بدلاً من node-fetch يمكنك استخدام axios أو global fetch في Node 18+.

npm init -y
npm install google-auth-library node-fetch


كيف تعمل نفس العملية من Postman

توليد Access Token:
الطرقة البسيطة: استخدم السكربت أعلاه لتوليد توكن جديد ثم انسخه.

بدائل: إعداد Authorization في Postman لاستخراج توكن عبر إعداد JWT OAuth2 (معقد قليلاً) — لكن الأسهل هو استخدام السكربت مؤقتًا.

إعداد Request في Postman:
Method: POST

https://fcm.googleapis.com/v1/projects/geecoders/messages:send


– Headers:
    – `Authorization: Bearer <ACCESS_TOKEN>` (التوكن الذي حصلت عليه)
    – `Content-Type: application/json` (أو `application/json; UTF-8`)


body:
{
  "message": {
    "topic": "SRM",
    "notification": {
      "title": "تحديث جديد 💸",
      "body": "قم بتحديث التطبيق الآن للاستمتاع بالمميزات الجديدة"
    },
    "data": {
      "url": "https://www.geecoders.com",
      "id_app": "com.geecoders.geecoders"
    },
    "apns": {
      "payload": {
        "aps": {
          "sound": "Tri-tone",
          "mutable-content": 1
        }
      }
    }
  }
}
إرسال الإشعارات بالطريقة الجديدة يوفر أمانًا وتحكمًا أكبر، وباستخدام السكربت أعلاه يمكنك بسرعة توليد Access Token وإرسال رسالة topic جاهزة مع دعم iOS عبر apns. في Postman يمكنك تجربة نفس الجسم بعد توليد توكن صالح، وتأكد دائمًا من project_id وصلاحيات الـ Service Account. إذا أردت، أقدملك ملف Postman Collection جاهز أو سكربت Node.js معدل ليأخذ الوسائط (topic، title، body) من سطر الأوامر عشان تسهّل عملية الإرسال


لمزيد من المقالات : دمج Android Flavors مع Flutter: خطوات سهلة لربط تطبيقاتك
شاهد أيضًا
مقالات ذات صلة
كيفية الانتقال الى اي تطبيق موجود في هاتفك باستخدام Flutter

كيفية الانتقال الى اي تطبيق موجود في هاتفك باستخدام Flutter عندما يكون لديك اكثر من…

اظهار رسالة بتحديث التطبيق عندما يتم اصدار نسخة جديده من تطبيقك في flutter

اظهار رسالة بتحديث التطبيق عندما يتم اصدار نسخة جديده من تطبيقك في flutter في بعض…

كيف تستطيع جلب بيانات من اكثر من جدول داخل برنامج Orecal Sql Database

 بسم الله الرحمن الرحيم مرحبا بكم في مقاله جديده من مقالات تعلم اس كيو ال…

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع