
۱۴۰۳/۱۲/۲۲
پوش نوتیفیکیشن یکی از مهمترین ابزارهای ارتباطی بین اپلیکیشنها و کاربران است. کسبوکارها از این روش برای ارسال پیامهای فوری، اطلاعرسانیهای مهم و افزایش تعامل کاربران استفاده میکنند.
با این حال، بسیاری از سرویسهای موجود مانند Firebase Cloud Messaging (FCM) و Apple Push Notification Service (APNS) به دلایل تحریمها و هزینههای بالا مشکلاتی ایجاد کردهاند. در این مقاله یاد میگیریم که چگونه یک سرویس پوش نوتیفیکیشن اختصاصی راهاندازی کنیم که کاملاً مستقل و قابل سفارشیسازی باشد.
برای ایجاد سرویس پوش نوتیفیکیشن، نیاز به سروری پایدار داریم. گزینههای پیشنهادی:
دو پروتکل محبوب برای ارسال نوتیفیکیشن:
برای ارسال نوتیفیکیشن در حجم بالا، بهتر است از RabbitMQ، Apache Kafka یا Redis Pub/Sub استفاده کنیم.
یک API برای ارسال نوتیفیکیشن در Node.js و Express:
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const webpush = require('web-push');
app.use(bodyParser.json());
const VAPID_KEYS = {
publicKey: "********",
privateKey: "********",
};
webpush.setVapidDetails(
"mailto:your-email@example.com",
VAPID_KEYS.publicKey,
VAPID_KEYS.privateKey
);
app.post('/send-notification', (req, res) => {
const { subscription, message } = req.body;
webpush.sendNotification(subscription, message)
.then(() => res.status(200).json({ success: true }))
.catch(err => res.status(500).json({ error: err.message }));
});
app.listen(3000, () => console.log("Server running on port 3000"));
هر کاربر هنگام ثبتنام، یک توکن اختصاصی دریافت میکند که برای ارسال نوتیفیکیشن استفاده میشود.
برای ارسال و مدیریت نوتیفیکیشنها، یک پنل مدیریتی تحت وب طراحی کنید (مثلاً با React.js یا Vue.js).
سرویس باید از وب (Web Push API)، اندروید و iOS پشتیبانی کند.
کد مربوط به دریافت و نمایش نوتیفیکیشن در سرویس ورکر:
self.addEventListener("push", (e) => {
const data = e.data.json();
self.registration.showNotification(data.title, {
body: data.description,
icon: data.icon,
data: { url: data.url },
actions: [{ action: "open_url", title: "مشاهده" }],
});
});
self.addEventListener("notificationclick", (event) => {
event.notification.close();
const url = event.notification.data.url || "https://your-website.com";
event.waitUntil(clients.openWindow(url));
});
function gilacePusher(saveDevicePushData, publicVapidKey, scope) {
if (localStorage.gilacePusher !== "true") {
localStorage.gilacePusher = "true";
saveGilacePusherData(saveDevicePushData, publicVapidKey, scope)
.catch((err) => {
console.error(err);
localStorage.gilacePusher = "false";
});
}
}
async function saveGilacePusherData(saveDevicePushData, publicVapidKey, scope) {
const register = await navigator.serviceWorker.register("./sw.js", { scope });
const subscription = await register.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicVapidKey),
});
await saveDevicePushData(subscription);
}
برای تست ارسال نوتیفیکیشن، میتوان از Postman یا ابزارهای زیر استفاده کرد:
$headers = array(
'safekey: ' . $authorization,
'Content-Type: application/json',
'charset: utf-8'
);
try {
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $this->url.'/send');
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_TIMEOUT, 5);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($handle);
curl_close($handle);
}catch (\Exception $ex) {
}
با این کد به سادگی به سرور پوش نوتیفیکیشن یک درخواست میدید و منتظر می مونید تا در دستگاه مد نظر شما نشون بده. دقت کنید این کد رو میتونید پس از اتمام موجودی یک کالا یا حتا ارسال موفق کالا ارسال کنید
| ویژگی | سرویس اختصاصی | Firebase (FCM) | OneSignal |
|---|---|---|---|
| بدون تحریم | ✅ | ❌ | ❌ |
| حفظ حریم خصوصی | ✅ | ❌ | ❌ |
| کنترل کامل روی دادهها | ✅ | ❌ | ❌ |
| هزینه پایین در مقیاس بالا | ✅ | ❌ | ❌ |
ایجاد یک سرویس پوش نوتیفیکیشن اختصاصی به کسبوکارها کمک میکند تا بدون نگرانی از تحریمها، تعامل کاربران را افزایش دهند. با استفاده از فناوریهای مناسب، میتوان سیستمی پایدار، مقیاسپذیر و امن برای ارسال نوتیفیکیشنها ایجاد کرد.
🚀 اگر به دنبال راهکاری مطمئن برای ارسال نوتیفیکیشن هستید، راهاندازی یک سرور اختصاصی بهترین گزینه است!
یه وقت مشاوره رایگان رزرو کنید. کارشناسان ما خیلی سریع با شما تماس میگیرند و تمام جزییات را در اختیار شما خواهند گذاشت