قبل از اینکه به API بپردازیم، بیایید از ابتدا تا انتها به push نگاهی بیندازیم. سپس با بررسی مباحث یا APIهای جداگانه در ادامه، ایدهای از اهمیت و دلیل آن خواهید داشت.
سه مرحله کلیدی برای اجرای push عبارتند از:
- اضافه کردن منطق سمت کلاینت برای ثبت نام کاربر برای ارسال پیام (یعنی جاوا اسکریپت و رابط کاربری در برنامه وب شما که کاربر را برای ارسال پیام ثبت میکند).
- فراخوانی API از بکاند/برنامه شما که یک پیام فشار را به دستگاه کاربر ارسال میکند.
- فایل جاوا اسکریپت سرویس ورکر که هنگام رسیدن پوش به دستگاه، یک "رویداد پوش" دریافت میکند. در این جاوا اسکریپت است که میتوانید یک اعلان نمایش دهید.
بیایید با کمی جزئیات بیشتر بررسی کنیم که هر یک از این مراحل شامل چه مواردی میشود.
مرحله ۱: سمت کلاینت
اولین قدم، «عضو کردن» یک کاربر برای دریافت پیامهای فوری است.
عضویت یک کاربر نیاز به دو چیز دارد. اول، گرفتن اجازه از کاربر برای ارسال پیامهای فوری به او. دوم، دریافت PushSubscription از مرورگر.
یک PushSubscription شامل تمام اطلاعاتی است که برای ارسال یک پیام فشار به آن کاربر نیاز داریم. میتوانید این را به نوعی به عنوان یک شناسه برای دستگاه آن کاربر در نظر بگیرید.
همه این کارها در جاوا اسکریپت با استفاده از Push API انجام میشود.
قبل از ثبت نام کاربر، باید مجموعهای از «کلیدهای سرور برنامه» را ایجاد کنید که بعداً به آنها خواهیم پرداخت.
کلیدهای سرور برنامه که با نام کلیدهای VAPID نیز شناخته میشوند، مختص سرور شما هستند. آنها به یک سرویس ارسال اعلان (push service) اجازه میدهند تا بداند کدام سرور برنامه، یک کاربر را مشترک شده است و اطمینان حاصل کند که همان سروری است که پیامهای ارسال اعلان را برای آن کاربر ارسال میکند.
پس از اینکه کاربر را ثبت نام کردید و یک PushSubscription داشتید، باید جزئیات PushSubscription را به backend / سرور خود ارسال کنید. در سرور خود، این ثبت نام را در یک پایگاه داده ذخیره کرده و از آن برای ارسال یک پیام push به آن کاربر استفاده خواهید کرد.
مرحله ۲: ارسال پیام فوری
وقتی میخواهید یک پیام فشاری به کاربران خود ارسال کنید، باید یک فراخوانی API به یک سرویس فشاری انجام دهید. این فراخوانی API شامل دادههایی است که باید ارسال شوند، پیام به چه کسی ارسال شود و هرگونه معیاری در مورد نحوه ارسال پیام. معمولاً این فراخوانی API از سرور شما انجام میشود.
برخی از سوالاتی که ممکن است از خودتان بپرسید:
- سرویس پوش (push) کیست و چیست؟
- API چه شکلی است؟ آیا JSON، XML یا چیز دیگری است؟
- API چه کاری میتواند انجام دهد؟
سرویس پوش (push) کیست و چیست؟
یک سرویس ارسال درخواست، درخواست شبکه را دریافت میکند، آن را اعتبارسنجی میکند و یک پیام ارسالی به مرورگر مربوطه ارسال میکند. اگر مرورگر آفلاین باشد، پیام تا زمانی که مرورگر آنلاین شود، در صف انتظار قرار میگیرد.
هر مرورگری میتواند از هر سرویس پوشی که میخواهد استفاده کند، این چیزی است که توسعهدهندگان هیچ کنترلی روی آن ندارند. این مشکلی نیست زیرا هر سرویس پوشی انتظار فراخوانی API یکسانی را دارد. به این معنی که لازم نیست برای شما مهم باشد که سرویس پوش چه کسی است. فقط باید مطمئن شوید که فراخوانی API شما معتبر است.
برای دریافت URL مناسب برای راهاندازی یک پیام push (یعنی URL مربوط به سرویس push)، فقط کافی است به مقدار endpoint در PushSubscription نگاه کنید.
در زیر مثالی از مقادیری که از PushSubscription دریافت خواهید کرد، آورده شده است:
{
"endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
"keys": {
"p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
"auth": "tBHItJI5svbpez7KI4CCXg=="
}
}
نقطه پایانی در این مورد https://random-push-service.com/some-kind-of-unique-id-1234/v2/ است. سرویس push 'random-push-service.com' خواهد بود و هر نقطه پایانی برای یک کاربر منحصر به فرد است که با 'some-kind-of-unique-id-1234' نشان داده شده است. همانطور که شروع به کار با push میکنید، متوجه این الگو خواهید شد.
کلیدهای موجود در اشتراک بعداً پوشش داده خواهند شد.
API چه شکلی است؟
اشاره کردم که هر سرویس پوش وب انتظار فراخوانی API یکسانی را دارد. آن API، پروتکل پوش وب است. این یک استاندارد IETF است که نحوه فراخوانی API به یک سرویس پوش را تعریف میکند.
فراخوانی API نیاز به تنظیم هدرهای خاصی دارد و دادهها باید به صورت جریانی از بایتها باشند. ما به کتابخانههایی که میتوانند این فراخوانی API را برای ما انجام دهند و همچنین نحوه انجام آن توسط خودمان، نگاهی خواهیم انداخت.
API چه کاری میتواند انجام دهد؟
این API راهی برای ارسال پیام به کاربر، با/بدون داده، فراهم میکند و دستورالعملهایی برای نحوه ارسال پیام ارائه میدهد.
دادههایی که با یک پیام فشار ارسال میکنید باید رمزگذاری شوند. دلیل این امر این است که از مشاهده دادههای ارسال شده با پیام فشار توسط سرویسهای فشار، که میتوانند هر کسی باشند، جلوگیری میکند. این مهم است زیرا مرورگر تصمیم میگیرد از کدام سرویس فشار استفاده کند، که میتواند دری را برای مرورگرهایی که از یک سرویس فشار ناامن استفاده میکنند، باز کند.
وقتی یک پیام فشاری را فعال میکنید، سرویس فشار، فراخوانی API را دریافت کرده و پیام را در صف قرار میدهد. این پیام تا زمانی که دستگاه کاربر آنلاین شود و سرویس فشار بتواند پیامها را تحویل دهد، در صف باقی میماند. دستورالعملهایی که میتوانید به سرویس فشار بدهید، نحوه صفبندی پیام فشاری را تعریف میکنند.
دستورالعملها شامل جزئیاتی مانند موارد زیر هستند:
مدت زمان ماندگاری یک پیام ارسالی. این پارامتر مشخص میکند که یک پیام چه مدت باید در صف انتظار بماند تا حذف شده و تحویل داده نشود.
فوریت پیام را تعریف کنید. این مورد در مواردی مفید است که سرویس ارسال پیام (push) با ارسال پیامهای با اولویت بالا، عمر باتری کاربران را حفظ میکند.
به یک پیام فوری، یک نام «موضوع» بدهید که هر پیام در حال انتظار را با این پیام جدید جایگزین کند.
مرحله ۳: رویداد Push روی دستگاه کاربر
پس از ارسال پیام پوش، سرویس پوش، پیام شما را تا زمان وقوع یکی از رویدادهای زیر در سرور خود نگه میدارد:
- دستگاه آنلاین میشود و سرویس ارسال، پیام را ارسال میکند.
- پیام منقضی میشود. در این صورت، سرویس ارسال، پیام را از صف خود حذف میکند و هرگز تحویل داده نخواهد شد.
وقتی سرویس پوش (push) پیامی را ارسال میکند، مرورگر پیام را دریافت میکند، دادهها را رمزگشایی میکند و یک رویداد push ) را در سرویس ورکر شما ارسال میکند.
یک سرویس ورکر یک فایل جاوا اسکریپت «ویژه» است. مرورگر میتواند این جاوا اسکریپت را بدون باز بودن صفحه شما اجرا کند. حتی میتواند این جاوا اسکریپت را وقتی مرورگر بسته است نیز اجرا کند. یک سرویس ورکر همچنین دارای APIهایی مانند push است که در صفحه وب در دسترس نیستند (یعنی APIهایی که از اسکریپت سرویس ورکر در دسترس نیستند).
درون رویداد «push» سرویس ورکر است که میتوانید هر وظیفه پسزمینهای را انجام دهید. میتوانید فراخوانیهای تحلیلی انجام دهید، صفحات را به صورت آفلاین ذخیره کنید و اعلانها را نمایش دهید.
این کل جریان پیامرسانی فوری است.
کجا برویم؟
- مرور کلی اعلانهای وب
- نحوه کار پوش
- عضویت کاربر
- تجربه کاربری مجوزها
- ارسال پیام با کتابخانههای Web Push
- پروتکل فشار وب
- مدیریت رویدادهای Push
- نمایش یک اعلان
- رفتار اعلان
- الگوهای رایج اعلانها
- سوالات متداول در مورد اعلانهای فشاری
- مشکلات رایج و گزارش اشکالات