درخواست عضویت و اجازه دریافت اعلان در Web Push و PWA
مرجع فنی کنترل نمایش درخواست عضویت در مرورگر با autoPrompt، درخواست دستی، رابط سفارشی و PWA در iOS.
مرورگر چه محدودیتهایی دارد؟
مرورگر فقط در محیط امن (Secure Context)، مانند سایت دارای HTTPS، اجازه درخواست اعلان میدهد. بهتر است این درخواست پس از اقدام کاربر، مثلاً کلیک روی دکمه عضویت، نمایش داده شود. اگر کاربر درخواست را رد کند و وضعیت denied شود، کد سایت نمیتواند آن را به granted تغییر دهد؛ خود کاربر باید اجازه اعلان را در تنظیمات مرورگر فعال کند.
حالتهای پوشفا
| حالت | تنظیم | رفتار |
|---|---|---|
| خودکار | autoPrompt: true | زمان نمایش از تنظیمات سرویس خوانده میشود. |
| دستی | autoPrompt: false | کد شما showPrompt یا requestPermission را فراخوانی میکند. |
| رابط سفارشی | گزینه پرامپت سفارشی سایت در پنل | رویداد pushfaCustomPromptRequest منتشر میشود؛ نمایش و مدیریت فرم درخواست عضویت را شما پیادهسازی میکنید. |
ظاهرهای آماده درخواست تأیید یا رد در پنل
در «تنظیمات عضویت» سرویس میتوانید یکی از ظاهرهای آماده OneSignal، Center modal، Bottom sheet، Floating card، Minimal bar، Glass یا Gradient را انتخاب کنید. پیشنمایش پایین فهرست، متن و ظاهر دکمههای تأیید و رد را قبل از ذخیره نشان میدهد؛ با تغییر عنوان، متن دکمهها، رنگها و فونت، همین پیشنمایش همان لحظه بهروزرسانی میشود.
درخواست دستی
<script>
window.PushfaConfig = { autoPrompt: false };
</script>
<script src="https://sdk.pushfa.com/notification-v2.js?api_public_key=YOUR_PUBLIC_KEY" type="module"></script>
<script>
document.querySelector('#enable-push').addEventListener('click', async () => {
await window.Pushfa.requestPermission();
});
</script>
درخواست عضویت با ظاهر دلخواه
window.addEventListener('pushfaCustomPromptRequest', () => {
document.querySelector('#my-prompt').hidden = false;
});
document.querySelector('#accept').onclick = () => window.Pushfa.requestPermission();
document.querySelector('#later').onclick = () => window.Pushfa.snoozePrompt(7);
iOS و PWA
در iOS 16.4+ ابتدا وباپ باید به Home Screen اضافه شود. اجازه دریافت اعلان داخل نسخه نصبشده PWA درخواست میشود، نه Safari معمولی. برای راهنمای نصب میتوانید showIosInstallPrompt را فراخوانی کنید.