۱۴۰۳/۱۲/۲۲
پوش نوتیفیکیشن یکی از مهمترین ابزارهای ارتباطی بین اپلیکیشنها و کاربران است. کسبوکارها از این روش برای ارسال پیامهای فوری، اطلاعرسانیهای مهم و افزایش تعامل کاربران استفاده میکنند.
با این حال، بسیاری از سرویسهای موجود مانند 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 |
---|---|---|---|
بدون تحریم | ✅ | ❌ | ❌ |
حفظ حریم خصوصی | ✅ | ❌ | ❌ |
کنترل کامل روی دادهها | ✅ | ❌ | ❌ |
هزینه پایین در مقیاس بالا | ✅ | ❌ | ❌ |
ایجاد یک سرویس پوش نوتیفیکیشن اختصاصی به کسبوکارها کمک میکند تا بدون نگرانی از تحریمها، تعامل کاربران را افزایش دهند. با استفاده از فناوریهای مناسب، میتوان سیستمی پایدار، مقیاسپذیر و امن برای ارسال نوتیفیکیشنها ایجاد کرد.
🚀 اگر به دنبال راهکاری مطمئن برای ارسال نوتیفیکیشن هستید، راهاندازی یک سرور اختصاصی بهترین گزینه است!
یه وقت مشاوره رایگان رزرو کنید. کارشناسان ما خیلی سریع با شما تماس میگیرند و تمام جزییات را در اختیار شما خواهند گذاشت