للقيام بذلك يمكنك استخدام تقنية مثل firebase cloud messaging.
و هي تعمل كالتالي:
في بعض الحالات يكون من غير الممكن الاعتماد على أكواد ال client فقط، و من هذه الحالات:
عندما نريد ربط third party APIs مثل Twilio لإرسال رسائل SMS أو SendGrid لإرسال e-mails.
عندما يكون لديك متطلبات مصادقة متقدمة
عندما تكون الأكواد الخاصة بك computationally intensive و بالتالي لا يمكنك تنفيذها في جانب العميل، أو أنها تحتاج إلى خادم موثوق للعمل به
في هذه الحالات يمكنك استخدام Firebase بين الخادم و العميل. الخوادم الخاصة بك يمكنها أن تتصل مع firebase و تتفاعل مع البيانات تمامًا مثل أي عميل آخر.بمعنى آخر الخادم الخاص بك سيتواصل مع العميل عن طريق التغيير في البيانات "manipulating data" في firebase.و ال Security and Firebase Rules language تتيح لك تعيين وصول كامل للبيانات الموجودة على الخادم الخاص بك.و الأكواد الخاصة بالخادم يمكنها أن تستمع لأي تغييرات تحدث على ال data عن طريق العميل و تجيب على هذه الغييرات بطريقة مناسبة.
هنا على الرغم من أنك مازلت تستخدم خادم، إلّا أن firebase ستقوم بتولي أمر المهام الثقيلة عنك مثل ال scale و real-time updates.
و حتى تقوم بهذه العملية يمكنك أن تبحث عن مقالات أو سلاسل تعليمية حول هذا الأمر و ستجد العديد منها. إذا واجهتك أي مشاكل يمكنك أن تخبرنا و سنقوم بمساعدتك.
مثلًا يمكنك استدعاء ال API بواسطة PHP عن طريق الكود التالي، مع تغير key وtoken
<?php
define('API_ACCESS_KEY','Api key from Fcm add here');
$fcmUrl = 'https://fcm.googleapis.com/fcm/send';
$token='Token_Key';
$notification = [
'title' =>'title',
'body' => 'body of message.',
'icon' =>'myIcon',
'sound' => 'mySound'
];
$extraNotificationData = ["message" => $notification,"moredata" =>'dd'];
$fcmNotification = [
//'registration_ids' => $tokenList, //multple token array
'to' => $token, //single token
'notification' => $notification,
'data' => $extraNotificationData
];
$headers = [
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$fcmUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification));
$result = curl_exec($ch);
curl_close($ch);
echo $result;