شناسه پایدارتر بخوانید
پس از تأیید اعلان و ثبت موفق توکن، Subscriber ID را دریافت کنید؛ با تغییر عادی توکن، این شناسه عوض نمیشود.
در دریافت، ذخیره و ارسال، Subscriber ID را ترجیح دهید. این شناسه با چرخش توکن FCM ثابت میماند و هدفگیری مخاطب را پایدارتر میکند.
مراحل مهاجرت را ببینید ← برای وبسایتها، اپهای Android و iOS و اتصالهای APIFCM_TOKEN_AFCM_TOKEN_Bتوکن FCM نشانی فنی تحویل اعلان است و میتواند تازهسازی شود. Subscriber ID شناسه پروفایل مخاطب در پوشفاست؛ پوشفا آن را به توکن فعلی همان پروفایل متصل میکند.
پس از تأیید اعلان و ثبت موفق توکن، Subscriber ID را دریافت کنید؛ با تغییر عادی توکن، این شناسه عوض نمیشود.
شناسه مشترکی را که دریافت اعلان را فعال کرده، همراه سرویس مربوط در بکاند ذخیره کنید. نگهداری یک توکن قدیمی میتواند ارسالهای بعدی را به مقصد نامعتبر هدایت کند.
شناسه ثابت را به API بدهید؛ پوشفا توکن فعلی و معتبر همان مخاطب را در محدوده سرویس شما پیدا میکند.
اگر از درخواست آماده پوشفا استفاده میکنید، نمونه «سافت پرامپت آماده» را بردارید. اگر دکمه یا فرم عضویت را خودتان ساختهاید، نمونه «دستی یا کاستوم» را بردارید. هر دو نمونه پایین همین بخش هستند؛ فقط یکی را استفاده کنید.
زدن دکمه «بله» در کادر پوشفا بهتنهایی کافی نیست؛ کاربر باید اجازه اعلان مرورگر را هم بدهد و توکن با موفقیت ثبت شود. نمونههای زیر همین مراحل را بررسی میکنند و سپس subscriber_id را به سایت شما میفرستند.
ممکن است پوشفا پیش از این مراحل هم یک شناسه بسازد. همه شناسههایی را که میبینید، به فهرست دریافتکنندگان پوش اضافه نکنید.
در آدرس دریافت شناسه در سایت خودتان، بررسی کنید که این subscriber_id برای همین کاربر و سرویس وجود دارد یا خیر. اگر وجود ندارد، اضافه کنید؛ اگر وجود دارد، رکورد تکراری نسازید. یک کاربر ممکن است با چند دستگاه، چند شناسه داشته باشد.
توکن قدیمی را با تغییر نام به شناسه تبدیل نکنید. Subscriber ID واقعی را از SDK همان دستگاه یا ستون Subscriber ID در پنل بگیرید و به کاربر درست وصل کنید.
برای یک مخاطب، fcm_token را با subscriber_id جایگزین کنید. برای چند مخاطب، آرایه fcm_tokens را با subscriber_ids جایگزین کنید. تغییر بعدی توکن را خود پوشفا مدیریت میکند. ابتدا یک پیام به یک مخاطب بفرستید؛ روش قبلی برای مخاطبانی که هنوز شناسهشان را ندارید پشتیبانی میشود.
کد نمونه را باز کنید و در صفحه سایتتان قرار دهید. YOUR_PUBLIC_KEY را با کلید عمومی سرویس و /api/push-subscribers را با آدرس دریافت شناسه در بکاند خودتان عوض کنید. این آدرس مربوط به سایت شماست و باید توسط توسعهدهنده پیادهسازی شود.
کد قبلی بارگذاری SDK را با نمونه انتخابشده جایگزین کنید تا SDK دو بار بارگذاری نشود. احراز هویت و CSRF باید مطابق سایت شما اعمال شود؛ کلید خصوصی پوشفا فقط در بکاند بماند.
همان کادر عضویتی که ظاهرش را در پنل پوشفا انتخاب کردهاید. دکمه جدیدی نسازید؛ این کد منتظر ثبت موفق توکن میماند و بعد شناسه را میفرستد. با تغییر توکن هم دوباره اجرا میشود.
<script>
async function savePushfaSubscriber(token) {
if (!token || !('Notification' in window) || Notification.permission !== 'granted') return;
const subscriberId = window.Pushfa.getSubscriberId();
if (!subscriberId) return;
const response = await fetch('/api/push-subscribers', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ subscriber_id: subscriberId }),
});
if (!response.ok) throw new Error('ذخیره شناسه در سایت شما انجام نشد.');
}
// مشترک جدید یا تغییر توکن: پس از ثبت موفق توکن در پوشفا
window.addEventListener('pushfaTokenChange', (event) => {
savePushfaSubscriber(event.detail).catch(console.error);
});
</script>
<script
src="https://sdk.pushfa.com/notification-v2.js?api_public_key=YOUR_PUBLIC_KEY"
type="module">
</script>برای وقتی که دکمه فعالسازی را خودتان میسازید. کاربر روی دکمه سایت شما کلیک میکند؛ کد تا پاسخ اجازه مرورگر و ثبت توکن صبر میکند، سپس شناسه را میفرستد. دکمه این نمونه، دکمه داخلی کادر پوشفا نیست.
<button id="enable-push" type="button" disabled>فعالسازی اعلانها</button>
<p id="push-status" role="status"></p>
<script>
window.PushfaConfig = { ...window.PushfaConfig, autoPrompt: false };
document.getElementById('enable-push').addEventListener('click', async (event) => {
const button = event.currentTarget;
const status = document.getElementById('push-status');
button.disabled = true;
status.textContent = 'لطفاً اجازه اعلان را در مرورگر تأیید کنید.';
try {
const token = await window.Pushfa.requestPermission();
if (!token || !('Notification' in window) || Notification.permission !== 'granted') {
status.textContent = 'اعلان فعال نشد؛ هیچ شناسهای به سایت شما ارسال نشد.';
return;
}
const subscriberId = window.Pushfa.getSubscriberId();
if (!subscriberId) {
status.textContent = 'شناسه آماده نشد؛ دوباره تلاش کنید.';
return;
}
const response = await fetch('/api/push-subscribers', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ subscriber_id: subscriberId }),
});
if (!response.ok) throw new Error('ذخیره شناسه در سایت شما انجام نشد.');
status.textContent = 'اعلان فعال شد و شناسه در سایت شما ذخیره شد.';
} catch (error) {
status.textContent = error.message || 'خطایی رخ داد؛ دوباره تلاش کنید.';
} finally {
button.disabled = false;
}
});
</script>
<script
src="https://sdk.pushfa.com/notification-v2.js?api_public_key=YOUR_PUBLIC_KEY"
type="module"
onload="document.getElementById('enable-push').disabled = false">
</script>نمونهها با صفحه دریافت و ذخیره شناسه یکسان هستند. اگر کاربر اجازه ندهد یا توکن ثبت نشود، شناسهای ارسال نمیکنند.
نمونهها درخواست کامل هستند. کلیدها و شناسه مخاطب را با مقادیر سرویس خود جایگزین کنید. کلید خصوصی فقط در Backend بماند.
ارسال تکی: POST /api/webservices/send-single-message
{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"fcm_token": "CURRENT_FCM_TOKEN",
"title": "پیام آزمایشی",
"body": "سلام از پوشفا",
"send_time": "current"
}{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"subscriber_id": "SUBSCRIBER_UUID",
"title": "پیام آزمایشی",
"body": "سلام از پوشفا",
"send_time": "current"
}| نوع درخواست | کلید قدیمی | کلید پیشنهادی |
|---|---|---|
| ارسال تکی / تکی لایت | fcm_token | subscriber_id |
| ارسال گروهی / گروهی لایت | fcm_tokens[] | subscriber_ids[] |
| Alias، ویژگیهای Bracket، کاربر تست و عضویت تاپیک | fcm_token | subscriber_id |
ارسال گروهی: POST /api/webservices/send-group-message
{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"subscriber_ids": ["SUBSCRIBER_UUID_1", "SUBSCRIBER_UUID_2"],
"title": "پیام گروهی",
"body": "سلام به همراهان پوشفا",
"send_time": "current"
}
در JSON نام کلید subscriber_ids است و مقدار آن آرایه؛ نگارش subscriber_ids[] برای فرم است. در ارسال به تاپیک، بهجای آرایه شناسهها از topic استفاده کنید.
این شناسه در پروفایل موجود و هنگام چرخش توکن ثابت میماند. حذف پروفایل، پاککردن دادههای سایت یا نصب مجدد اپ میتواند به هویت تازه منجر شود. برای هویت حساب کاربر بین چند دستگاه، از External ID یا Alias مناسب استفاده کنید.
خیر. پروفایل ممکن است پیش از اجازه اعلان ساخته شود، پس صرفاً بر اساس وجود شناسه یا رویداد pushfaSubscriberId، آن را به فهرست دریافتکنندگان پوش اضافه نکنید. برای کادر آماده از pushfaTokenChange و برای دکمه اختصاصی از نتیجه requestPermission() استفاده کنید؛ در هر دو حالت، اجازه مرورگر باید تأیید شده و توکن غیرخالی باشد. دریافت پوش همچنان به اجازه کاربر، اشتراک و توکن معتبر و شرایط دستگاه وابسته است.
خیر. SDK همچنان توکن فنی را دریافت، ثبت و تازهسازی میکند. تغییر مربوط به شناسهای است که شما برای هدفگیری مخاطب دریافت و ذخیره میکنید و به وبسرویس ارسال میدهید.
همان Subscriber ID واقعی را نگه دارید و نام کلید درخواست را به subscriber_id تغییر دهید. در گروهی نیز آرایه شناسهها را با کلید subscriber_ids بفرستید؛ کلیدهای قدیمی را از آن درخواست حذف کنید.
صرف تغییر کلید API برای یک پروفایل و اشتراک معتبر، به اجازه مجدد نیاز ندارد. اگر عضویت دستگاه از بین رفته یا مجوز لغو شده باشد، وضعیت آن دستگاه باید جداگانه بررسی شود.
اول دریافت و ذخیره Subscriber ID، سپس جایگزینی کلید درخواست. راهنماهای کامل و نمونههای آماده برای ادامه کار:
ورود به پنل پوشفا