بازگشت به وبلاگ

آموزش ارسال وب پوش نوتیفیکیشن در سایت‌های React؛ از کدنویسی تا راه‌اندازی در چند دقیقه با پوشفا

آموزش ارسال وب پوش نوتیفیکیشن در سایت‌های React؛ از کدنویسی تا راه‌اندازی در چند دقیقه با پوشفا

پوش نوتیفیکیشن یا همان اعلان وب، یکی از مؤثرترین کانال‌های ارتباط با کاربران است که به شما اجازه می‌دهد حتی وقتی کاربر در سایت نیست، پیام‌های مهم، تخفیف‌ها و هشدارها را به مرورگر او بفرستید. اگر سایت شما با React ساخته شده، احتمالاً به این فکر افتاده‌اید که چطور می‌توانید از این قابلیت استفاده کنید. شاید در جست‌وجوهایتان به کتابخانه‌هایی مثل Firebase Cloud Messaging یا راهنماهای متعدد رسیده باشید و بعد از دیدن کدها و تنظیمات سمت سرور متوجه شده‌اید که راه‌اندازی دستی پوش نوتیفیکیشن در React آن‌قدرها هم که تصور می‌کردید ساده نیست. در این مقاله ابتدا نشان می‌دهیم که چرا ارسال پوش نوتیفیکیشن در سایت‌های React به‌صورت دستی سخت و زمان‌بر است، چه پیش‌نیازها و مفاهیم فنی‌ای لازم دارید، چه خطاهایی ممکن است رخ دهد و سپس یک راه‌حل عملی و سریع معرفی می‌کنیم که با آن تنها در چند دقیقه و بدون درگیرشدن با پیچیدگی‌های فنی، می‌توانید پوش نوتیفیکیشن را در سایت React خود فعال کنید. اگر با مفهوم وب پوش آشنایی کامل ندارید، پیشنهاد می‌کنیم ابتدا مقاله «پوش نوتیفیکیشن چیست و چگونه کار می‌کند؟» را مطالعه کنید تا پایه مفاهیم برای شما روشن شود.

پوش نوتیفیکیشن وب چیست و چرا در React اهمیت دارد؟

پوش نوتیفیکیشن وب به پیام‌هایی گفته می‌شود که از سمت سرور به مرورگر کاربر ارسال می‌شوند و حتی زمانی که کاربر صفحه وب‌سایت شما را باز نکرده باشد، روی دسکتاپ یا گوشی او نمایش داده می‌شوند. این پیام‌ها برخلاف ایمیل نیازی به بازکردن ندارند و برخلاف پیامک هزینه‌ای برای کاربر ندارند. برای کاربرانی که به سایت شما سر می‌زنند، اجازه اشتراک پوش یک اقدام ساده است و اگر پیام‌ها ارزشمند باشند، نرخ کلیک و بازگشت به سایت به‌طور قابل توجهی افزایش می‌یابد.

React به‌عنوان یکی از محبوب‌ترین کتابخانه‌های جاوااسکریپت برای ساخت رابط کاربری، در بسیاری از وب‌سایت‌های ایرانی و خارجی استفاده می‌شود. بسیاری از فروشگاه‌های اینترنتی، وبلاگ‌ها، سامانه‌های آموزشی و اپلیکیشن‌های تحت وب با React ساخته شده‌اند. اما React به‌تنهایی هیچ امکانی برای ارسال پوش نوتیفیکیشن ندارد؛ چون پوش نوتیفیکیشن یک قابلیت مرورگر است و نه یک قابلیت کتابخانه‌ای. برای استفاده از آن باید با مفاهیمی مانند Service Worker، Push API، Notification API و پروتکل وب پوش آشنا شوید.

اهمیت این موضوع برای سایت‌های React دوچندان است؛ چون کاربران این سایت‌ها معمولاً تجربه کاربری مدرنی دارند و انتظار دارند اعلان‌ها نیز بدون وقفه در تجربه آن‌ها نمایش داده شوند. اگر پوش نوتیفیکیشن را اشتباه پیاده‌سازی کنید، ممکن است اعلان‌ها نمایش داده نشوند، کاربران نتوانند اشتراک را فعال کنند یا حتی پیام‌های تکراری و آزاردهنده دریافت کنند. به همین دلیل، قبل از شروع باید بدانید دقیقاً چه چیزی در پشت صحنه اتفاق می‌افتد.

در ادامه، ابتدا چالش‌های فنی را بررسی می‌کنیم و سپس یک مسیر ساده برای راه‌اندازی سریع ارائه می‌دهیم.

چرا ارسال پوش نوتیفیکیشن در React دشوار است؟

وقتی می‌خواهید پوش نوتیفیکیشن را به‌صورت دستی در یک سایت React پیاده‌سازی کنید، با چند لایه پیچیدگی روبه‌رو می‌شوید. این پیچیدگی‌ها فقط مربوط به نوشتن چند خط کد نیست؛ بلکه به معماری مرورگرها، پروتکل‌های امنیتی و مدیریت چرخه حیات سرویس‌ورکر مربوط می‌شود. در این بخش مهم‌ترین چالش‌ها را توضیح می‌دهیم.

سرویس‌ورکر (Service Worker) چیست و چرا مهم است؟

سرویس‌ورکر یک فایل جاوااسکریپت است که مرورگر آن را در پس‌زمینه و جدا از صفحه وب اجرا می‌کند. این فایل نقش واسط بین مرورگر و سرور اعلان را ایفا می‌کند. وقتی پوش ارسال می‌شود، مرورگر سرویس‌ورکر را بیدار می‌کند، رویداد push را به آن می‌دهد و سرویس‌ورکر تصمیم می‌گیرد که اعلان را نمایش دهد یا نه. بدون سرویس‌ورکر، امکان دریافت پوش نوتیفیکیشن در وب وجود ندارد.

در سایت‌های React، چالش اصلی این است که سرویس‌ورکر باید به‌درستی ثبت شود و مسیر آن با ساختار پروژه شما هماهنگ باشد. اگر از React به همراه ابزارهایی مانند Vite یا Create React App استفاده می‌کنید، فایل‌های عمومی در پوشه public قرار می‌گیرند و سرویس‌ورکر معمولاً باید در همان پوشه باشد. اگر از Next.js استفاده می‌کنید، باید سرویس‌ورکر را به‌صورت استاتیک در پوشه public قرار دهید یا از کتابخانه‌های خاصی استفاده کنید. این انتخاب‌ها ممکن است باعث خطاهای مسیردهی شوند که رفع آن‌ها زمان‌بر است.

کلیدهای VAPID و احراز هویت

برای ارسال پوش نوتیفیکیشن از سمت سرور، باید یک جفت کلید عمومی و خصوصی VAPID داشته باشید. کلید عمومی در سمت کلاینت برای ایجاد اشتراک استفاده می‌شود و کلید خصوصی در سمت سرور برای امضای درخواست ارسال. تولید این کلیدها و انتقال امن آن‌ها به بخش‌های مختلف برنامه، یک چالش فنی دیگر است. اگر کلید عمومی و خصوصی با یکدیگر هماهنگ نباشند، مرورگر درخواست اشتراک را رد می‌کند یا سرور اعلان خطای Unauthorized می‌گیرد.

علاوه بر این، پروتکل وب پوش نیاز به رمزنگاری payload دارد. پیامی که از سرور به مرورگر ارسال می‌شود باید با استاندارد Message Encryption for Web Push رمزنگاری شود. پیاده‌سازی این رمزنگاری به‌صورت دستی بسیار پیچیده است و معمولاً توسعه‌دهندگان از کتابخانه‌هایی مانند web-push در Node.js استفاده می‌کنند. اما استفاده از این کتابخانه‌ها هم نیاز به یادگیری و پیکربندی دارد.

مدیریت دسترسی (Permission API)

مرورگرها برای نمایش اعلان، ابتدا باید از کاربر اجازه بگیرند. این اجازه از طریق Notification.requestPermission درخواست می‌شود. اما نکته مهم این است که درخواست اجازه باید در پاسخ به یک اقدام کاربر (مثل کلیک روی دکمه) انجام شود؛ در غیر این صورت مرورگر ممکن است آن را بلاک کند. همچنین باید وضعیت‌های مختلف دسترسی یعنی granted، denied و default را مدیریت کنید. اگر کاربر دسترسی را رد کند، دیگر نمی‌توانید دوباره از او اجازه بگیرید مگر اینکه خودش تنظیمات مرورگر را تغییر دهد. این محدودیت‌ها باعث می‌شود طراحی تجربه کاربری درخواست اجازه، به یک دغدغه جداگانه تبدیل شود.

اشتراک (Subscription) و ذخیره‌سازی آن

وقتی کاربر اجازه می‌دهد، مرورگر یک شیء اشتراک (PushSubscription) شامل endpoint و کلیدهای رمزنگاری می‌سازد. این اشتراک باید در سرور شما ذخیره شود تا بتوانید بعداً برای همان کاربر پوش ارسال کنید. حال باید تصمیم بگیرید اشتراک‌ها را کجا ذخیره کنید: دیتابیس، ردیس یا سرویس ابری؟ همچنین باید اشتراک‌های منقضی‌شده و لغوشده را مدیریت کنید. اگر کاربر اشتراک را در مرورگر باطل کند، ارسال پوش به آن endpoint خطا می‌دهد و باید آن را از دیتابیس پاک کنید. این مدیریت داده، به‌خصوص در مقیاس بزرگ، پیچیده می‌شود.

از طرف دیگر، باید کدهای مربوط به ارسال پوش را در سمت سرور بنویسید. این کد باید با کتابخانه web-push کار کند، payload را رمزنگاری کند، درخواست HTTP به FCM یا Mozilla autopush بفرستد و پاسخ‌ها را مدیریت کند. همه این موارد دست‌به‌دست هم می‌دهند تا یک پیاده‌سازی ساده در ظاهر، به یک پروژه چندروزه تبدیل شود.

آموزش گام‌به‌گام پیاده‌سازی دستی پوش در React

در این بخش، یک نمای کلی از مراحل پیاده‌سازی دستی پوش نوتیفیکیشن در React ارائه می‌دهیم. این مراحل را صرفاً برای آشنایی با سختی کار می‌بینید؛ چون در بخش بعدی راه‌حل ساده‌تری پیشنهاد می‌کنیم.

راه‌اندازی پروژه React

فرض کنید یک پروژه React با Vite ساخته‌اید. ابتدا باید فایل سرویس‌ورکر را در پوشه public ایجاد کنید. مثلاً فایلی به نام sw.js با محتوای زیر:

self.addEventListener('push', function(event) {
  let data = {};
  if (event.data) {
    data = event.data.json();
  }
  const options = {
    body: data.body || 'پیام جدید',
    icon: '/icon.png',
    data: { url: data.url || '/' }
  };
  event.waitUntil(self.registration.showNotification(data.title || 'وب پوش', options));
});

self.addEventListener('notificationclick', function(event) {
  event.notification.close();
  if (event.notification.data && event.notification.data.url) {
    clients.openWindow(event.notification.data.url);
  }
});

این کد فقط بخش نمایش اعلان را مدیریت می‌کند. اما برای اینکه سرویس‌ورکر در سایت شما کار کند، باید آن را از داخل کد React ثبت کنید. این کار معمولاً در یک useEffect یا در فایل اصلی برنامه انجام می‌شود:

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js')
    .then(function(registration) {
      console.log('Service Worker registered', registration);
    })
    .catch(function(error) {
      console.log('Service Worker registration failed', error);
    });
}

نکته مهم این است که مرورگر فایل sw.js را به‌صورت خودکار کش می‌کند. اگر بعداً این فایل را تغییر دهید، مرورگر نسخه قدیمی را تا زمانی که فایل واقعاً تغییر نکند استفاده می‌کند. این موضوع در توسعه محلی و استقرار، مشکلاتی ایجاد می‌کند که باید با به‌روزرسانی خودکار سرویس‌ورکر حل شوند.

درخواست اجازه و ایجاد اشتراک

حالا باید از کاربر اجازه بگیرید و اشتراک را ایجاد کنید. کد زیر نمونه‌ای از این کار است:

async function subscribeUser() {
  const registration = await navigator.serviceWorker.ready;
  const permission = await Notification.requestPermission();
  if (permission !== 'granted') {
    alert('اجازه ارسال نوتیفیکیشن داده نشد');
    return;
  }
  const applicationServerKey = urlBase64ToUint8Array('YOUR_VAPID_PUBLIC_KEY');
  const subscription = await registration.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: applicationServerKey
  });
  console.log('Subscription:', JSON.stringify(subscription));
  // ارسال اشتراک به سرور
  await fetch('/api/subscribe', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(subscription)
  });
}

تابع urlBase64ToUint8Array یک تابع کمکی است که کلید VAPID را از فرمت Base64 به Uint8Array تبدیل می‌کند. نوشتن این تابع، یکی دیگر از کارهای پیش‌پاافتاده اما ضروری است که وقت شما را می‌گیرد. همچنین باید endpoint ذخیره‌سازی اشتراک را در سمت سرور بسازید و اشتراک را در دیتابیس ذخیره کنید.

ارسال پوش از سمت سرور

در سمت سرور، باید از کتابخانه web-push استفاده کنید. ابتدا کتابخانه را نصب و تنظیم می‌کنید:

const webpush = require('web-push');

webpush.setVapidDetails(
  'mailto:your@email.com',
  'YOUR_VAPID_PUBLIC_KEY',
  'YOUR_VAPID_PRIVATE_KEY'
);

const subscription = {
  endpoint: '...',
  keys: {
    p256dh: '...',
    auth: '...'
  }
};

const payload = JSON.stringify({
  title: 'تخفیف ویژه',
  body: '۳۰٪ تخفیف برای خرید بعدی',
  url: 'https://example.com/offer'
});

webpush.sendNotification(subscription, payload)
  .then(() => console.log('Sent'))
  .catch((err) => console.error('Error', err));

اگر payload را به‌صورت متنی ساده ارسال کنید، ممکن است در مرورگرهای مختلف مشکلاتی پیش بیاید. کتابخانه web-push این مسائل را مدیریت می‌کند، اما همچنان شما باید منطق خطاها، مدیریت اشتراک‌های نامعتبر و صف ارسال را خودتان بنویسید. برای یک وب‌سایت با هزاران کاربر، باید صف پیام، تلاش مجدد، لاگ‌گیری و گزارش‌گیری هم داشته باشید که زمان زیادی می‌برد.

نمایش اعلان و مدیریت کلیک

در فایل سرویس‌ورکر، رویداد push و notificationclick را پیاده‌سازی می‌کنید. اگر بخواهید کاربر با کلیک روی اعلان به صفحه خاصی هدایت شود، باید داده‌های url را در payload قرار دهید و در سرویس‌ورکر با clients.openWindow باز کنید. همچنین باید رفتار اعلان‌ها را در سیستم‌عامل‌های مختلف و مرورگرهای مختلف تست کنید. مثلاً سافاری روی iOS تا نسخه ۱۶.۳ از وب پوش پشتیبانی نمی‌کرد و کاربران مک محدودیت‌های خاصی دارند. این‌ها مواردی هستند که فقط با تجربه و تست مداوم قابل کشف هستند.

خطاها و مشکلات رایج پیاده‌سازی دستی

در پیاده‌سازی دستی، احتمال مواجهه با خطاهای زیر بسیار بالاست:

  • خطای NotAllowedError: معمولاً وقتی رخ می‌دهد که درخواست اجازه بدون تعامل کاربر انجام شده باشد یا کاربر قبلاً دسترسی را رد کرده باشد.
  • خطای InvalidStateError: وقتی رخ می‌دهد که pushManager.subscribe روی یک سرویس‌ورکر فعال فراخوانی نشود یا سرویس‌ورکر هنوز در وضعیت فعال نباشد.
  • خطای NotSupportedError: وقتی مرورگر از pushManager پشتیبانی نکند. این مورد در برخی مرورگرهای قدیمی یا تنظیمات خاص مرورگر دیده می‌شود.
  • خطای 401 Unauthorized در سرور: معمولاً به‌دلیل ناهماهنگی کلیدهای VAPID رخ می‌دهد.
  • خطای 404 در ارسال: یعنی endpoint اشتراک منقضی شده و باید اشتراک را از دیتابیس حذف کنید.
  • مشکل در نمایش اعلان در iOS: نسخه‌های قدیمی iOS از وب پوش پشتیبانی نمی‌کنند و حتی در نسخه‌های جدید، کاربر باید ابتدا سایت را به صفحه اصلی اضافه کند.
  • مشکل آفلاین بودن کاربر: اگر کاربر آفلاین باشد، پیام‌ها در صف قرار می‌گیرند و ممکن است بعداً تحویل شوند یا نشوند. مدیریت این صف نیازمند زیرساخت جداگانه است.
  • نقص در سرویس‌ورکر پس از به‌روزرسانی: اگر نسخه جدید سرویس‌ورکر را به‌درستی فعال نکنید، کاربران ممکن است پیام «This site has been updated in the background» را ببینند یا اعلان‌ها دریافت نکنند.

علاوه بر این‌ها، باید به این نکته توجه کنید که مرورگرها سیاست‌های متفاوتی دارند. برای مثال گوگل کروم محدودیت‌های مربوط به نرخ پیام‌ها و رفتارهای اسپم‌گونه دارد و اگر از حد مجاز عبور کنید، ممکن است اشتراک کاربر به‌صورت خودکار لغو شود. رفع این مشکلات بدون ابزار مناسب و پشتیبانی فنی، زمان‌بر و خسته‌کننده است.

برای آشنایی بیشتر با دلایل دریافت‌نشدن پوش‌ها، مقاله «وب پوش نوتیفیکیشن‌ها ارسال می‌شوند اما در مقصد دریافت نمی‌شوند» را بخوانید. همچنین اگر کاربر آفلاین باشد، رفتار پیش‌فرض مرورگرها در مقاله «وب پوش نوتیفیکیشن: وقتی کاربر آفلاین باشه چی؟» توضیح داده شده است.

راه‌حل سریع: ارسال پوش در React با پوشفا

پوشفا یک سرویس ایرانی وب پوش نوتیفیکیشن است که زیرساخت فنی پیچیده ارسال اعلان را برای شما مدیریت می‌کند. با پوشفا دیگر نیازی نیست نگران سرویس‌ورکر، کلید VAPID، رمزنگاری payload، ذخیره‌سازی اشتراک‌ها یا مدیریت خطاهای سرور باشید. کافی است یک اسکریپت کوچک را به سایت React خود اضافه کنید و از پنل کاربری، کمپین‌های پوش را ارسال کنید. در این بخش، مراحل راه‌اندازی را قدم‌به‌قدم توضیح می‌دهیم.

چرا پوشفا برای سایت‌های React مناسب است؟

اولین مزیت پوشفا این است که مستقل از فریم‌ورک عمل می‌کند. چه سایت شما با React ساخته شده باشد، چه Next.js، چه Vue و چه حتی یک سایت ساده HTML، اسکریپت پوشفا در همه آن‌ها کار می‌کند. شما نیازی به تغییر معماری پروژه ندارید و می‌توانید در چند دقیقه پوش را فعال کنید. دومین مزیت، مدیریت کامل زیرساخت است. پوشفا سرویس‌ورکر را به‌صورت خودکار روی دامنه شما نصب می‌کند، کلیدهای VAPID را تولید می‌کند و اشتراک کاربران را در سرویس‌دهنده خودش ذخیره می‌کند. سومین مزیت، امکانات کمپین‌سازی است. در پنل پوشفا می‌توانید کاربران را بر اساس رفتارشان دسته‌بندی کنید، پیام‌ها را زمان‌بندی کنید، عملکرد کمپین را تحلیل کنید و از قابلیت‌هایی مانند Frequency Cap و rate limiter برای جلوگیری از ارسال بیش از حد استفاده کنید. همچنین میتوانید به شکل یکپارچه از سرویس بازگشت مشتری RetenX استفاده کنید. واز همه مهم تر برروی روی PWA و iOS سازگاری کامل دارد.

مراحل راه‌اندازی در چند دقیقه

برای راه‌اندازی پوشفا در سایت React، مراحل زیر را انجام دهید:

  1. ساخت حساب در پوشفا: ابتدا در سایت پوشفا ثبت‌نام کنید و یک وب‌سایت جدید اضافه کنید. آدرس دامنه سایت خود را وارد کنید و تأیید مالکیت دامنه را انجام دهید. این کار معمولاً با قراردادن یک متا تگ یا یک فایل کوچک انجام می‌شود.
  2. دریافت کد نصب: بعد از افزودن وب‌سایت، پنل پوشفا یک کد جاوااسکریپت به شما می‌دهد. این کد شامل آدرس سرویس‌ورکر پوشفا و شناسه سایت شماست. کد را کپی کنید.
  3. اضافه‌کردن کد به پروژه React: کد را در فایل index.html یا در کامپوننت اصلی برنامه خود قرار دهید. اگر از React استفاده می‌کنید، می‌توانید این کد را داخل تگ script در فایل public/index.html بگذارید یا با یک کتابخانه مدیریت تگ، آن را در همه صفحات لود کنید.
  4. تست اولیه: سایت را باز کنید و دکمه درخواست اجازه را تست کنید. پوشفا یک ویجت درخواست اشتراک دارد که می‌توانید آن را سفارشی کنید. وقتی کاربر اجازه دهد، اشتراک او به‌صورت خودکار در پنل پوشفا ثبت می‌شود.
  5. ارسال اولین کمپین: از پنل پوشفا، کمپین جدید بسازید، عنوان و متن پوش را بنویسید، لینک مقصد را تعیین کنید و دکمه ارسال را بزنید. پوش برای همه کاربران عضو ارسال می‌شود.

همین! با این پنج مرحله، پوش نوتیفیکیشن در سایت React شما فعال شده است. نه نیازی به نوشتن سرویس‌ورکر دارید، نه نیازی به مدیریت کلید VAPID دارید و نه لازم است نگران سازگاری با مرورگرهای مختلف باشید. پوشفا همه این موارد را به‌صورت خودکار مدیریت می‌کند.

ارسال کمپین و مدیریت کاربران در پنل پوشفا

بعد از راه‌اندازی، وارد پنل پوشفا شوید. در بخش مخاطبان، تعداد کاربران عضو، مرورگر و دستگاه آن‌ها را می‌بینید. می‌توانید کاربران را بر اساس تاریخ عضویت، مرورگر یا رفتارشان دسته‌بندی کنید. برای مثال، اگر کاربران سبد خرید رها کرده باشند، می‌توانید یک کمپین مخصوص آن‌ها بسازید. این قابلیت برای فروشگاه‌های اینترنتی که با React ساخته شده‌اند بسیار ارزشمند است. راهنمای عملی این کار را می‌توانید در مقاله «بازیابی سبد خرید رها شده با نوتیفیکیشن وب پوش» ببینید.

در بخش ارسال کمپین، می‌توانید متن پوش را بنویسید و ایموجی اضافه کنید. همچنین می‌توانید زمان‌بندی ارسال را تنظیم کنید تا پیام در بهترین زمان ممکن به دست کاربر برسد. اگر نمی‌دانید بهترین زمان ارسال چه زمانی است، مقاله «بهترین زمان ارسال پوش نوتیفیکیشن» را مطالعه کنید. پوشفا همچنین آمار دقیقی از تعداد ارسال‌ها، نرخ کلیک و نرخ تبدیل به شما نشان می‌دهد که می‌توانید از آن برای بهبود کمپین‌های بعدی استفاده کنید.

مقایسه پیاده‌سازی دستی و استفاده از پوشفا

برای اینکه دید بهتری نسبت به تفاوت روش دستی و استفاده از پوشفا داشته باشید، جدول زیر را بررسی کنید:

موضوعپیاده‌سازی دستیاستفاده از پوشفا
زمان راه‌اندازیچند روز تا چند هفته5-20  دقیقه
نیاز به سرویس‌ورکرباید خودتان بنویسید و مدیریت کنیدبه‌صورت خودکار نصب و مدیریت می‌شود
کلید VAPID وتوکن هاتولید و نگهداری دستیمدیریت خودکار
ذخیره‌سازی اشتراک کاربراننیاز به طراحی دیتابیس و APIدر پنل پوشفا ذخیره می‌شود میتوانید خودتان نیز ذخیره کنید
ارسال پیام از سمت سرورنیاز به کدنویسی با کتابخانه web-pushبدون کدنویسی، از پنل و وب سرویس آماده
مدیریت خطاهاباید خودتان خطاها را شناسایی و رفع کنیدپوشفا خطاها را مدیریت و گزارش می‌کند
سازگاری با مرورگرهانیاز به تست گستردهبه‌روزرسانی خودکار سازگاری
امکانات شخصی‌سازی و تحلیلباید خودتان پیاده‌سازی کنیدامکانات آماده در پنل
پشتیبانی از PWAباید خودتان پیاده‌سازی کنیدکاملا سازگار
پشتیبانی از IOS و سافاریباید خودتان پیاده‌سازی کنیدکاملا سازگار
تاپیک ها وسگمنت بندیباید خودتان انجام دهیدکاملا آماده استفاده است
تعیین شناسه مستعار برای هر کاربروجود ندارد باید پیاده شودکاملا آماده استفاده است
امکانات باز گشت مشتریRetenXباید خودتان پیاده‌سازی کنیدبه شکل جامع پیاده سازی شده
انواع پرامت های آماده وسفارشیباید دستی پیاده شودپرامت های آماده وقابل کاستوم شده ای وجود دارد
ارسال پوش بیصداوجود نداردآماده استفاده
قابلیت بروزرسانی پوش نوتیفیکیشن ارسال شدهوجود ندرادامکان بروزرسانی کاملا سریع از پنل و وب سرویس

همان‌طور که می‌بینید، تفاوت اصلی در زمان و تخصص فنی موردنیاز است. اگر تیم فنی قوی و زمان کافی دارید، پیاده‌سازی دستی ممکن است برای شما جذاب باشد؛ اما اگر می‌خواهید سریع و با اطمینان وبدون خطا به نتیجه برسید و روی کسب‌وکار خود تمرکز کنید، پوشفا گزینه منطقی‌تری است.

بهترین روش‌ها و نکات تکمیلی برای کمپین پوش

فعال‌سازی پوش نوتیفیکیشن فقط شروع کار است. برای اینکه بتوانید از این کانال ارتباطی بیشترین بازدهی را بگیرید، باید چند اصل مهم را رعایت کنید.

فرکانس ارسال را مدیریت کنید

ارسال بیش از حد پوش نوتیفیکیشن باعث می‌شود کاربران احساس کنند مورد آزار قرار گرفته‌اند و اشتراک را لغو کنند. باید تعداد پیام‌های روزانه را محدود کنید و فقط پیام‌های ارزشمند ارسال کنید. پوشفا قابلیت Frequency Cap دارد که به شما اجازه می‌دهد حداکثر تعداد پیام برای هر کاربر را مشخص کنید. این قابلیت در مقاله «چند پوش نوتیفیکیشن در روز ارسال کنیم؟» به‌طور کامل توضیح داده شده است.

پیام را شخصی‌سازی کنید

کاربران به پیام‌های عمومی و تکراری واکنش خوبی نشان نمی‌دهند. اگر بتوانید پیام را بر اساس نام کاربر، محصولات بازدیدشده یا موقعیت جغرافیایی شخصی‌سازی کنید، نرخ کلیک به‌طور قابل توجهی افزایش می‌یابد. برای یادگیری روش‌های شخصی‌سازی، مقاله «شخصی‌سازی پوش نوتیفیکیشن در ۲۰۲۶» را مطالعه کنید.

تحلیل عملکرد کمپین‌ها

بعد از هر کمپین، شاخص‌هایی مانند نرخ کلیک (CTR)، نرخ تبدیل و نرخ لغو اشتراک را بررسی کنید. پوشفا این آمار را به‌صورت خودکار در پنل نشان می‌دهد. با تحلیل این داده‌ها می‌توانید متوجه شوید چه نوع پیامی برای مخاطبان شما جذاب‌تر است و چه زمانی بهترین نرخ تعامل را دارد. برای آشنایی بیشتر با شاخص‌های کلیدی، مقاله «تحلیل عملکرد پوش نوتیفیکیشن وب» را بخوانید.

لینک مقصد را فراموش نکنید

هر پوش نوتیفیکیشن باید به یک صفحه مرتبط و مفید هدایت کند. اگر کاربر روی پوش کلیک کند و به صفحه اصلی سایت برود، احتمال بازگشت او کم می‌شود. بهتر است لینک مقصد را به صفحه محصول، مقاله یا سبد خرید هدایت کنید. همچنین می‌توانید از دیپ لینک برای هدایت کاربر به بخش خاصی از اپلیکیشن خود استفاده کنید. مفهوم دیپ لینک در مقاله «دیپ لینک در پوش نوتیفیکیشن چیست؟» توضیح داده شده است.

متن پوش را کوتاه و جذاب بنویسید

متن پوش نباید طولانی باشد. عنوان را کوتاه، بدن را مفید و از یک دعوت به اقدام واضح استفاده کنید. استفاده از ایموجی‌های مناسب می‌تواند توجه کاربر را جلب کند، اما نباید در استفاده از آن‌ها زیاده‌روی کنید. برای یادگیری اصول کمپین‌نویسی، مقاله «کمپین‌نویسی پوش نوتیفیکیشن؛ راهنمای جامع نوشتن متن Push Notification برای افزایش CTR» را ببینید.

جمع‌بندی

ارسال پوش نوتیفیکیشن در سایت‌های React به‌صورت دستی کاری پیچیده، زمان‌بر و پر از جزئیات فنی است. باید با سرویس‌ورکر، کلیدهای VAPID، مدیریت دسترسی، ذخیره‌سازی اشتراک، رمزنگاری پیام و سازگاری با مرورگرهای مختلف دست‌وپنجه نرم کنید. این پیچیدگی‌ها ممکن است بسیاری از تیم‌ها را از استفاده از این کانال ارتباطی مؤثر منصرف کند. اما با سرویس پوشفا، این مسیر به‌شدت ساده می‌شود. تنها کافی است کد کوتاه پوشفا را به سایت React خود اضافه کنید، دامنه را تأیید کنید و سپس از پنل کاربری، کمپین‌های پوش را بدون نیاز به دانش فنی عمیق ارسال کنید. در چند دقیقه، پوش نوتیفیکیشن در سایت شما فعال می‌شود و می‌توانید از مزایای آن یعنی بازگرداندن کاربران، افزایش فروش و بهبود تعامل بهره‌مند شوید.

اگر می‌خواهید اطلاعات فنی بیشتری درباره زیرساخت وب پوش به دست آورید، مقاله «زیرساخت فنی پوش نوتیفیکیشن: راهنمای جامع پروتکل‌ها، رمزنگاری و تحویل‌پذیری» را مطالعه کنید. همچنین برای راهنمای گام‌به‌گام فعال‌سازی در سایت‌های غیر-React، مقاله «چگونه پوش نوتیفیکیشن را در سایت فعال کنیم» مفید خواهد بود. حالا وقت آن است که دست به کار شوید و اولین پوش خود را با پوشفا ارسال کنید.