پوش دیدنکس
عضویت با رضایت، Inbox، Web Push و FCM، صف و آمار.
پوش دیدنکس برای مخاطبان ناشر
در پنل ناشر «پوش دیدنکس» را باز کنید. دیدنکس، نصب و عضویت، رضایت، موضوع/زبان، پیشنویس، زمانبندی، صف پایدار، retry، رمزگذاری توکن و آمار را مدیریت میکند. سرور شخصی ناشر لازم نیست.
| مسیر | نیاز واقعی | محدوده تحویل |
|---|---|---|
| Inbox دیدنکس | فعالسازی رسانه و رضایت؛ بدون سرویس بیرونی | هنگام بازبودن اپ/سایت و فراخوانی inbox؛ اعلان سیستم در حالت بسته نیست |
| Android / iOS و سایر SDKهای موبایل | پروژه Firebase و service account معتبر؛ FCM در اپ، مجوز اعلان و تنظیم APNs برای iOS | تلاش برای تحویل پسزمینه از مسیر رسمی سیستمعامل |
| Web Push | HTTPS، service worker روی دامنه ناشر، پشتیبانی مرورگر و اجازه مخاطب؛ VAPID خودکار دیدنکس | پوش مرورگر؛ محدودیت نصب/مجوز مرورگر و سیستمعامل برقرار است |
۱. فعالسازی پنل
مالک رسانه، «تنظیم اتصال» را میزند؛ این عملیات تأیید امنیتی نشست میخواهد. JSON service account فقط در سرور رمزگذاری میشود و مقدار کامل به پنل/SDK برنمیگردد. برای حفظ کلید قبلی ورودی را خالی و برای حذف آن گزینه مخصوص را انتخاب کنید. service account باید مجوز FCM HTTP v1 در پروژه همان اپ داشته باشد. در iOS کلید APNs و قابلیت Push Notifications را طبق راهنمای Firebase/Apple در پروژه واقعی تنظیم کنید. نصب SDK دیدنکس حساب Firebase یا مجوز اپل ایجاد نمیکند.
۲. عضویت با رضایت
// Flutter: invoke only AFTER the user's permission/choice.
await client.audience.subscribeInbox(unitId,consent:true,topics:['news']);
// Background delivery: obtain the CURRENT token from Firebase Messaging first.
await client.audience.subscribeFcm(unitId,fcmToken:token,consent:true,topics:['news']);
// Re-register whenever FCM rotates the token.
await client.audience.unsubscribe(unitId);
// Web: copy /sdk/didnex-push-sw.js to YOUR site root first.
// Call inside the user's button click, never automatically on page load.
await DidnexAds.audience(unitId).subscribeWebPush({consent:true,workerPath:'/didnex-push-sw.js',topics:['news']});برای وب، فایل worker را با worker موجود سایت هماهنگ کنید؛ یک scope را بدون بررسی جایگزین نکنید. در iOS/مرورگر، پشتیبانی سیستم و شرایط نصب وباپ/مجوز را با راهنمای رسمی همان مرورگر تطبیق دهید. لغو اجازه سیستمعامل بهتنهایی جای unsubscribe را نمیگیرد؛ وقتی مخاطب انصراف داد، هر دو را بهروز کنید. موضوعها باید غیرحساس و حداکثر ۲۰ برچسب کوتاه باشند.
۳. پیام و زمانبندی
اعلان جدید ابتدا draft است. عنوان، متن، مقصد HTTPS، زمان و اعتبار را بررسی و سپس «شروع زمانبندی» را بزنید. مشترکان دارای رضایت در لحظه شروع پردازش snapshot میشوند؛ عضوهای آینده وارد صف قبلی نمیشوند. موضوع، زبان، پلتفرم و کشور/منطقه/شهر آخرین عضویت فیلتر میشوند؛ شعاع در سگمنت پوش ارائه نشده است. مقصد Web Push فقط دامنه همان رسانه است. پیشفرضها ظرفیت ۱۰٬۰۰۰ اشتراک، پنج تلاش با فاصله افزایشی، اعتبار تا هفت روز و حداکثر سه پذیرش سرویس پسزمینه در ۲۴ ساعت هستند؛ مدیر میتواند آنها را در مرکز تنظیمات تغییر دهد. مقدار واقعی در پنل پوش همان ناشر نمایش داده میشود.
زمانبند دیدنکس صف را پردازش میکند؛ در نسخه Node هر دقیقه اجرا میشود. در میزبانی Worker، Cron باید فعال باشد؛ شروع اعلان نیز یک پردازش پسزمینه درخواست میکند. اجرای زمانبند را در مرکز عملیات مدیر بررسی کنید. برای تعداد زیاد مخاطب، صف در چند نوبت تکمیل میشود. لغو، صف ارسالنشده را متوقف میکند؛ پیام پذیرفتهشده سرویس بیرونی قابل پسگرفتن نیست.
۴. دریافت و آمار
// Inbox: poll only while your screen/app is active; stop on pause.
final messages = await client.audience.inbox(unitId);
// Display each message in YOUR UI, then report it:
await client.audience.reportPush(message,'delivered');
// Only on the user's actual open:
await client.audience.reportPush(message,'opened');
// For FCM, pass the same data payload from your official Messaging callbacks.
// OS auto-displaying a notification is not a callback that Didn'tex can assume.accepted فقط یعنی FCM یا سرویس مرورگر درخواست را پذیرفته؛ تحویل قطعی یا دیدهشدن نیست. delivered/opened گزارش یکتای SDK با رسید امضاشدهاند و همچنان گزارش کلاینت محسوب میشوند. هنگام دریافت داده FCM در پیشزمینه، ابتدا پیام را واقعاً نشان دهید و بعد delivered بفرستید. Web worker همراه پس از showNotification گزارش میدهد. نبود مجوز، اینترنت، محدودیت باتری یا سرویس بیرونی میتواند تحویل را متوقف کند.
۵. اتصال سایر SDKها
// Unity: FCM token comes from FirebaseMessaging.TokenReceived.
await ads.SubscribePushAsync(unitId,true,currentFcmToken,new[]{"news"});
await ads.InboxAsync(unitId);
await ads.ReportPushAsync(receipt,"opened");
// Kotlin, background thread (or requestAsync):
audience.call(unitId,"subscribePush",JSONObject().put("provider","fcm").put("token",fcmToken).put("consent",true));
// Swift, after Firebase Messaging token callback:
try await audience.call(unitID:unitId,action:"subscribePush",values:["provider":"fcm","token":fcmToken,"consent":true])
// B4A, after the official FirebaseNotifications token callback:
Wait For (Ads.Audience(UnitId,"subscribePush",CreateMap("provider":"fcm","token":Token,"consent":True))) Complete (Result As Map)دیدنکس کتابخانه یا پیکربندی Firebase اختصاصی اپ را داخل همه SDKها مخفی نمیکند؛ از SDK رسمی همان پروژه، توکن و callback را دریافت کنید. مسیر Inbox کاملاً با زیرساخت دیدنکس و بدون Firebase در همه پلتفرمها قابل استفاده است. راهنمای رسمی FCM · رمزگذاری Web Push.