- هر سایتی در مرورگر درخواست مجوز می کند، کنترل تعداد منابعی که اکنون می توانند برای شما اعلان ارسال کنند دشوار است، هر کدام فرآیند پس زمینه خود را دارند که به طور جداگانه بیدار می شوند، هیچ سابقه ای از اعلان های دریافتی یا فیلتر وجود ندارد، هیچ همگام سازی اشتراک ها بین آنها وجود ندارد. دستگاه ها
- سایتها باید اعلانها را مستقیماً به دستگاهها ارسال کنند، ارتباط پایگاه داده دستگاه را نظارت کنند، دستگاه هر کاربر را بهصورت جداگانه نظارت کنند.
- این ویژگی فقط در سایت هایی با SSL کار می کند.
یک سرویس میانی که از تمام این عملکردها مراقبت می کند می تواند مشکلات پیش آمده را حل کند.
کمی تئوری
مقاله اصلی که من در واقع این تابع را بر روی آن ساخته ام را می توان یافتبه طور خلاصه، مرورگر یک Service-Worker ایجاد می کند (از Chrome 40 موجود است)، این یک فرآیند پس زمینه در JS است. به طور مداوم در پس زمینه کار نمی کند، اما به درخواست های مختلف از خارج پاسخ می دهد. به عنوان مثال، هنگامی که یک پیام فشار وارد می شود. البته او نیازی ندارد صفحه باز شود. علاوه بر این، حتی اگر مرورگر بسته باشد، کار می کند (خوب، نه کاملا بسته، اما در پس زمینه).
هنگامی که یک پیام فشار وارد می شود، مرورگر اعلان ها را نشان می دهد. همین. این به شما امکان می دهد بدون هیچ برنامه ای دریافت اعلان های فشار را به طور کامل پیاده سازی کنید، علاوه بر این، در اندروید در کروم موبایل کار می کند! از کاستی های آشکار را می توان در شناسایی کرد این لحظهاین واقعیت که امکان ارسال بار در یک پیام فشار وجود ندارد، یعنی. خود پیام گوگل این موضوع را به مسائل امنیتی نسبت می دهد و گزارش می دهد که در کروم 44 این مشکل به طور کامل حل شده است و مرورگر قادر به دریافت مستقیم داده ها خواهد بود. همچنین طبق برخی گزارش ها، اگر مرورگر بسته بود، درخواستی به آن نمی رسد. این مشکل با بیرون ریختن تمام اعلانهایی که در هنگام دریافت پیام بعدی تایید نشدهاند، حل میشود.
چگونه PushAll مشکل را حل می کند
حتی بدون وبسایت میتوانید اعلانها را از طریق Push API ارسال کنید. یعنی می توانید یک کانال ایجاد کنید و اعلان ها را به صورت دستی از سرور از طریق curl یا با اتصال یک فید RSS ارسال کنید. در این حالت کاربر اجازه دسترسی به ارسال به سایت PushAll را می دهد.در عین حال، توسعه دهنده نیازی به فکر کردن در مورد اینکه اعلان را برای چه کسی ارسال می کند، ندارد. در یک برنامه اندروید، در افزونه کروم یا مستقیماً از طریق Push API. او می تواند یک پیام به ده کاربر ارسال کند، اما در واقع به هر یک از 2-3 دستگاه از هر کاربر می رود. در آینده، این شامل سایر مرورگرها و پلتفرم های دیگر مانند iOS و WP می شود.
آزمایش کردن
این تابع همین دیروز نوشته شد و بنابراین آزمایش لازم است.برای آزمایش اعلان ها از طریق Push API، باید به وب سایت PushAll.ru بروید و با استفاده از حساب Google خود وارد شوید.
بلافاصله پس از ورود به دایرکتوری کانال هدایت می شوید. یک کلید در سمت راست بالا وجود دارد که ویژگی جدید را روشن می کند.
پس از فعال شدن، Chrome از شما می خواهد به اعلان ها دسترسی داشته باشید. پس از آن، باید به بخش پروفایل بروید و دستگاه را "پینگ" کنید
نحوه عملکرد اعلانها را در یک پیام شخصی یا در نظرات برای من بنویسید. برخی از افراد با نوتیفیکیشن ها مشکل داشتند و من می خواهم وضعیت را برطرف کنم. همچنین اعلانهای خود را بررسی کنید گوشی هوشمند اندروید. همانطور که تست می کنید، فکر می کنم چند کانال جالب در کاتالوگ پیدا کنید.
بلافاصله، به طوری که هیچ سوالی وجود ندارد: دریافت همه اعلان ها از کانال ها ضروری نیست. مشترک کانال شد، دوباره آن را باز کرد - فیلتر را باز کرد، وارد شد کلید واژه ها. برای موضوعاتی که برای شما مهم هستند، اول از همه، اعلانها فوراً به دستگاهها ارسال میشوند و بقیه را میتوانید از خود سایتها بخوانید (مثلاً برای کانال SoHabr یا کانالهای سریال تلویزیونی صدق میکند)
چشم انداز
این ویژگی به شما این امکان را می دهد که به مخاطبان زیادی از کاربران دسترسی پیدا کنید. بسیاری از مردم نصب یک برنامه یا افزونه را دشوار می دانند، اما فشار دادن چند دکمه دشوار نیست.در آینده یک ویجت ویژه برای سایت ها خواهم نوشت. انجام همزمان 4 کار با یک کلیک امکان پذیر خواهد بود.
- ثبت نام.
- وارد شدن
- اشتراک در
- اعلانهای Push API را در مرورگر فعال کنید.
پوش - اعلان، چیست؟ این یک نوع اعلان است که پس از ورود به سایتهای خاص، در گوشه سمت راست یا چپ بالای پنجره مرورگر ظاهر میشود و به اشتراک اخبار، بهروزرسانیهای سایت یا سایر تغییرات در پورتالی که بازدید کردهاید، پیشنهاد میکند. به طور کلی، به بیان ساده، این یک پنجره پاپ آپ با تماس برای عضویت در سایت است.
من مطمئناً هیچ مخالفتی با هر نوع اشتراک ندارم. مثلا اگر دوست دارید و برای شماست مواد مفید، که در وب سایت ما منتشر شده است، می توانید به راحتی با استفاده از همان RSS یا از فرم اشتراک پستی مشترک ما شوید و همچنین به ما بپیوندید گروه VKیا ما را دنبال کنید یوتیوب. و مهمتر از همه، شما می توانید این کار را به ابتکار خود انجام دهید، و نه به دلیل پنجره ای با کلمه " مشترک شوید، مشترک شوید، مشترک شوید».
محبوبیت چنین اعلان های فشاری تازه شروع به رشد کرده است، در نتیجه سایت های بیشتری سعی در معرفی موارد مشابه به خودی خود دارند. من مطمئن هستم که همه سایت های خبری این قابلیت را برای مدت طولانی فعال کرده اند.
شگفتانگیزترین چیز این است که مد برای این نوع اعلانها به تازگی شروع به رشد کرده است و در حال حاضر از همه خسته شده است. بسیاری آنها را با همان مقایسه می کنند تبلیغات سرزدهو پاپ آپ هایی که فقط مانع می شوند و آزار می دهند.
بنابراین در این آموزش، به شما نشان خواهم داد که چگونه اعلان اشتراک را در تنظیمات مرورگر خود غیرفعال کنید و برای همیشه از شر این پنجره پاپ آپ آزار دهنده خلاص شوید.
غیرفعال کردن اعلان های فشار در موزیلا فایرفاکس
در اصل، خاموش کردن نمایش اعلان ها، تقریباً در همه مرورگرها، مستقیماً در تنظیمات رخ می دهد. اما فایرفاکس یک استثنا بود، بله، در تنظیمات می توانید با علامت زدن کادر "مزاحم نشوید" در تنظیمات محتوا، اعلان را خاموش کنید، اما آنها فقط تا زمانی که مرورگر را راه اندازی مجدد نکنید مسدود می شوند.
به محض باز کردن مجدد فایرفاکس، علامتی که قبلاً تعیین کرده اید به طور خودکار برداشته می شود و همه چیز دوباره شروع می شود. البته این گزینه برای همه مناسب نیست، بنابراین برای چنین کاربرانی که میخواهند پوش نوتیفیکیشنها را یکبار برای همیشه غیرفعال کنند، باید موارد زیر را انجام دهید:
مقداری که روی false تنظیم کردهاید به این معنی است که دیگر با اشتراک برای دریافت اعلانهای فشار اذیت نخواهید شد.
مسدود کردن اعلانهای فشار در Google Chrome
در کروم، خاموش کردن اعلانها بسیار سادهتر است، زیرا میتوانید این کار را در تنظیمات معمول انجام دهید و نیازی به رفتن به پیکربندی مرورگر ندارید.
در صورت لزوم، مرورگر را مجدداً راه اندازی می کنیم و از عدم وجود پیشنهادات پاپ آپ دائمی برای دریافت اعلان ها از سایتی که بازدید کرده اید خوشحال می شویم.
خلاص شدن از شر اعلان ها در مرورگر Yandex
مرورگر بعدی کمتر معروف یاندکس نخواهد بود. مطمئناً بسیاری از مردم می دانند که برای ایجاد این مرورگر از موتور مشابهی در کروم استفاده شده است، بنابراین حتی تنظیمات نیز تقریباً یکسان هستند.
به عنوان مثال، تنظیمات من به دلایلی فقط از بار دوم ذخیره شد، من نمی دانم به چه چیزی متصل است، شاید به جای دکمه "پایان" روی ضربدر کلیک کردم و فقط پنجره را بستم، در نتیجه که تنظیمات ذخیره نشد. خوب، نکته اصلی این است که همه چیز برای بار دوم درست شد و درخواست اشتراک برای اعلان ها ناپدید شد.
آیا می توان اعلان های فشار را در اپرا غیرفعال کرد؟
و البته از اپرا هم نمی گذریم. من می دانم که تعداد بسیار زیادی از کاربران هنوز ترجیح می دهند از آن استفاده کنند. بنابراین، در اینجا دستورالعملی برای غیرفعال کردن اعلان های فشار برای Opera ارائه شده است.
به طور کلی، تنظیمات حتی تفاوت زیادی با مرورگرهای قبلی ندارند، اما در اصل این مهم نیست، نکته اصلی این است که اکنون درخواست برای دریافت اعلان از سایت دیگر ما را آزار نخواهد داد.
نحوه غیرفعال کردن اعلانهای فشار (فشار) مرورگر Yandex، کروم، فایرفاکس و اپرا
چگونه اعلانهای فشاری را خاموش کنیم - این سؤال برخی از کاربرانی را که پس از ورود به بسیاری از سایتهای اینترنت اعلانها را در مرورگر مشاهده میکنند، نگران میکند. فناوری Push برای توزیع اطلاعات در اینترنت از ارائه دهنده، در این مورد، سایت، به کاربر این سایت طراحی شده است.
اعلانهای فشاری برای سایت برای اطلاعرسانی به بازدیدکنندگان وبسایت در مورد اخبار، عمدتاً در مورد انتشار مقالات جدید مورد نیاز است. در این صورت بازدیدکننده به موقع اعلان هایی را از سایت دریافت می کند و می تواند بلافاصله اخبار را مطالعه کند.
اعلانها از طرف سایت با استفاده از یک سرویس شخص ثالث ارسال میشوند که تحویل اعلانها را به رایانههای کاربران سازماندهی میکند.
فشار اعلان در رایانه چیست؟ اگر بازدید کننده سایت موافقت کند که ارتباطات را از این منبع، سپس هر از چند گاهی نوتیفیکیشن هایی در مورد اخبار این وب سایت بر روی دسکتاپ کاربر ظاهر می شود.
نحوه عملکرد اعلانهای فشار
هنگام بازدید از سایتی که عملکرد ارسال اعلانها را فعال کرده است، بازدیدکننده هر بار درخواستی برای اجازه نمایش اعلانها را مشاهده میکند که در آن پیشنهاد میشود روی دکمههای "Allow" یا "Block" کلیک کنید. ممکن است نام دکمه ها متفاوت باشد، اما معنی همه جا یکسان است.
بازدیدکننده سایت می تواند این پنجره بازشو را نادیده بگیرد زیرا پنجره درخواست فشار اعلان کوچک است و در مرور سایت اختلالی ایجاد نمی کند.
ظاهر چنین ویندوزهایی بسته به سرویس ارسال اعلان از این سایت متفاوت است.
با کلیک بر روی دکمه "Allow"، موافقت می کنید که پیام های فشاری را در رایانه خود دریافت کنید.
در قسمت اعلان، روی دسکتاپ رایانه کاربر، اعلانهایی درباره اخبار این وبسایت ظاهر میشود. معمولاً این پیامی در مورد انتشار یک مقاله جدید است. برخی از سایت ها از توانایی ارسال هشدار، اطلاع رسانی در مورد همه چیز پشت سر هم، گاهی اوقات ارسال اطلاعات غیر ضروری سوء استفاده می کنند.
پس از دریافت پوش نوتیفیکیشن، کاربر می تواند برای مطالعه مقاله به سایت مراجعه کند و یا با نادیده گرفتن این پیام، اعلان را ببندد. چنین اعلان هایی از سایت ها عملاً در کار رایانه تداخلی ایجاد نمی کنند ، زیرا در قسمت اعلان نمایش داده می شوند و پس از مدت کوتاهی خود به خود بسته می شوند.
برای جلوگیری از عدم نمایش درخواست مجوز برای ارسال هشدار از این سایت با بازدید مجدد از این وب سایت، روی دکمه "Block" کلیک کنید.
اگر قبلاً پیامهای فشاری را از یک سایت خاص دریافت میکنید، کاربر میتواند اعلانهای فشار را به تنهایی در مرورگر خود غیرفعال کند، که در آن اجازه دریافت اعلانها را در رایانه خود داده است.
نحوه حذف اعلان های فشار پس از دریافت هشدار
در بسیاری از اعلان ها، بسته به تنظیمات سرویس ارسال کننده اعلان، می توانید اعلان های فشار را مستقیماً در پنجره پیام باز شده غیرفعال کنید.
برای انجام این کار، بر روی نماد تنظیمات (چرخدنده) کلیک کنید و سپس گزینه Turn off notifications from the site را انتخاب کنید.
پس از آن، اعلانهای این سایت دیگر در رایانه شما ظاهر نمیشوند.
چگونه اعلانهای فشاری را در گوگل کروم غیرفعال کنیم
وارد تنظیمات مرورگر گوگل کروم شوید، چرخ ماوس را به پایین اسکرول کنید، روی پیوند "پیشرفته" کلیک کنید.
در بخش "حریم خصوصی و امنیت" روی دکمه "تنظیمات سایت" کلیک کنید. در پنجره "تنظیمات سایت" که باز می شود، بخش "اعلان ها" را پیدا کنید.
در اینجا می توانید دریافت هشدار از سایت ها را تنظیم کنید. بهطور پیشفرض، «پیش از ارسال (توصیه میشود) اجازه درخواست شود» انتخاب شده است.
برای حذف اعلان های فشار در مرورگر گوگل Chrome، مورد «هشدارها را در سایتها نشان ندهد» را فعال کنید.
برای جلوگیری از دریافت هشدار از یک سایت خاص، روی دکمه "افزودن" که در مقابل پارامتر "Block" قرار دارد، کلیک کنید.
در پنجره «افزودن سایت»، آدرس سایت را وارد کرده و سپس روی دکمه «افزودن» کلیک کنید.
برای پیکربندی دریافت پیام های فشاری، روی دکمه "افزودن" واقع در مقابل گزینه "Allow" کلیک کنید.
در پنجره باز شده، سایت مورد نظر را به لیست سایت هایی که مجاز به دریافت اعلان در مرورگر گوگل کروم هستید، اضافه کنید.
نحوه غیرفعال کردن پیام های فشاری در موزیلا فایرفاکس (1 روش)
تنظیمات مرورگر را وارد کنید موزیلا فایرفاکسبخش «حریم خصوصی و امنیت» را باز کنید. در گزینه "Permissions" به گزینه "Notifications" بروید.
کادر کنار خاموش کردن اعلانها تا راهاندازی مجدد فایرفاکس را علامت بزنید. پس از آن، تا زمانی که مرورگر موزیلا فایرفاکس غیرفعال نشود، اعلانهای Push نشان داده نمیشوند.
برای مدیریت هشدارها، روی دکمه "تنظیمات..." کلیک کنید. در پنجره "گزینه ها - مجوز نمایش اعلان ها" لیستی از سایت ها وجود دارد که اعلان های آنها مجاز یا مسدود شده است.
اگر سایتی در کنار خود وضعیت "Block" را داشته باشد، اعلان های این سایت در رایانه شما ظاهر نمی شود، زیرا قبلاً درخواست ارسال اعلان از این سایت را مسدود کرده اید.
اگر وضعیت "مجاز" در کنار آدرس سایت باشد، اعلان های این سایت در رایانه شخصی شما ظاهر می شود.
می توانید با استفاده از دکمه Remove Website هر سایتی را از لیست حذف کنید یا با کلیک کردن روی دکمه Remove All Websites همه سایت ها را از لیست حذف کنید.
پس از آن، اعلان های جدید از سایت راه دور روی دسکتاپ رایانه شما ظاهر نمی شود. وقتی دوباره از این سایت بازدید کردید، درخواست دریافت هشدار را رد کنید.
برای مسدود کردن دریافت پیامهای جدید از سایتهایی غیر از مواردی که در این لیست فهرست شدهاند، کادر انتخاب «مسدود کردن درخواستهای جدید برای ارسال اعلانها» را علامت بزنید.
برای تکمیل پیکربندی ترتیب دریافت اعلانها، روی دکمه «ذخیره تغییرات» کلیک کنید.
نحوه حذف اعلان های فشار در موزیلا فایرفاکس (دو طرفه)
برای خاموش کردن کامل اعلان ها مرورگر موزیلافایرفاکس، باید تنظیمات مرورگر مخفی را وارد کنید.
عبارت "about:config" (بدون نقل قول) را در نوار آدرس تایپ کنید. در پنجره باز شده بر روی دکمه "من ریسک را قبول می کنم!" کلیک کنید.
در پنجره جدید، عبارت "dom.webnotifications.enabled" (بدون نقل قول) را در قسمت "جستجو" وارد کنید و سپس کلید "Enter" را فشار دهید.
این تنظیم به طور پیش فرض روی "درست" است. خط را برجسته کنید، کلیک کنید کلیک راستماوس، "Switch" را از منوی زمینه انتخاب کنید. مقدار پارامتر به "false" تغییر می کند.
نحوه غیرفعال کردن اعلان های فشار در Yandex.Browser
تنظیمات مرورگر Yandex را وارد کنید، به برگه "Sites" بروید.
در قسمت «سایتها» به گزینه «درخواستهای ارسال اعلانها» بروید. در اینجا سه گزینه برای اقدام وجود دارد:
- نمایش درخواست های ارسال (توصیه می شود).
- درخواست های ارسال را نشان ندهید.
- اشتراک خودکار در اعلان ها
گزینه مورد نظر را که روند دریافت پیام های فشاری را تنظیم می کند، انتخاب کنید. برای غیرفعال کردن کامل تمام اعلانهای فشاری در مرورگر Yandex، گزینه «درخواستهای ارسال را نشان ندهد» را انتخاب کنید.
اگر نیاز به پیکربندی دریافت اعلان های فردی دارید، روی پیوند "در سایت های دیگر" کلیک کنید. سپس، در پنجره «ارسال اعلانها»، انتخاب کنید که کدام اعلانهای فشاری را میخواهید مسدود کنید و کدامها را مجاز کنید.
تب "مجاز" یا "ممنوع" را باز کنید، با استفاده از دکمه "افزودن"، پیوندی به سایت در بخش مربوطه اضافه کنید.
نحوه خاموش کردن اعلان های فشار در اپرا
وارد منو شوید مرورگر اپرا، روی مورد کلیک کنید منوی زمینه"تنظیمات". بعد، بخش "پیشرفته" را انتخاب کنید، روی "امنیت" کلیک کنید.
در قسمت Privacy and Security، گزینه Content Settings را انتخاب کنید. گزینه "Notifications" را پیدا کنید.
در پنجره Notifications، گزینه "Ask permission before sending (recommended)" به طور پیش فرض فعال است.
در اینجا باید سایت را به بخش "Block" یا "Allow" اضافه کنید.
نحوه غیرفعال کردن اعلان های فشار در مایکروسافت اج
وارد تنظیمات مرورگر Microsoft Edge خود شوید. "گزینه ها" را انتخاب کنید، در پنجره "گزینه ها" روی مورد "مشاهده" کلیک کنید گزینه های اضافی". در پنجره «گزینههای پیشرفته»، «اعلانها» را انتخاب کرده و روی دکمه «مدیریت» کلیک کنید.
پنجره مدیریت اعلان ها سایت هایی را نشان می دهد که برای نمایش اعلان ها مجوز درخواست می کنند. می توانید مجوزهای سایت های خاص را تغییر دهید.
نتیجه گیری مقاله
کاربر می تواند به طور مستقل اعلان های فشار (فشار) را در مرورگری که روی دسکتاپ رایانه خود دریافت می کند غیرفعال کند و امکان ارسال اعلان ها از یک وب سایت خاص را فراهم کند.
اعلانهای فشاری در پنجره مرورگر ظاهر میشوند حتی اگر در زمان ارسال آنها آفلاین بودید. این یک ابزار بازاریابی عالی برای تبلیغ محصولات و خدمات کسب و کار شما است. با وجود این، اگر با یک اعلان صوتی همراه باشد، می توانند کاربران را آزار دهند. برای یادگیری نحوه خاموش کردن آنها به ادامه مطلب بروید.
نحوه فعال یا غیرفعال کردن اعلانهای فشار وب در Google Chrome
به تنظیمات مرورگر بروید
روی نماد تنظیمات در سمت راست پنجره مرورگر خود کلیک کنید و "تنظیمات" را انتخاب کنید.
تنظیمات پیشرفته را انتخاب کنید
صفحه را به پایین اسکرول کنید و "تنظیمات پیشرفته" را انتخاب کنید.
Content Settings را انتخاب کنید
روی «تنظیمات محتوا» در بخش «حریم خصوصی و امنیت» کلیک کنید.
Alerts را انتخاب کنید
روی Alerts کلیک کنید.
در اینجا میتوانید سایتهایی را اضافه کنید که میخواهید هشدارهایشان را دریافت کنید یا سایتهایی را که هشدارهایشان برایتان مهم نیست مسدود کنید.
همچنین، میتوانید آن را طوری تنظیم کنید که درخواست مجوز برای ارسال اعلانها را دریافت کنید.
از اعلانهای فشاری استفاده کنید تا مشتریان خود را در مورد اقلام موجود، فروش و آخرین پستهای وبلاگ خود مطلع کنید.
و برای اینکه اعلان های شما مسدود نشود، آنها را فقط برای آن دسته از کاربرانی که با دریافت آن موافقت کرده اند ارسال کنید.
اعلانهای فشاری در SendPulse
ارسال اعلان ها در سرویس ما رایگان است - در هر مقدار و برای همیشه! اگر قبلاً انجام می دهید بازاریابی ایمیلی، از فشار به عنوان کانال ارسال پیام اضافی استفاده کنید. به عنوان مثال، شما یک ایمیل با تخفیف برای یک روز خاص در آستانه تعطیلات ارسال کردید، اما مشترک آن را باز نکرد. در روز X یک اعلان فشار ارسال کنید و شانس بیشتری برای افزایش فروش خواهید داشت.
اعلانها را برای یک تجربه شخصیسازی شده شخصیسازی و بخشبندی کنید، پیامهای آزمایشی، ارسال خودکار را پس از رویدادهای خاص تنظیم کنید. فقط یک خط کد در هر سایت شما را از تبدیل و فروش بالا دور می کند.
از سال 2015، این فناوری به سرعت شروع به محبوبیت کرد. Push APIاز کروم به طور فزاینده ای، هنگام بازدید از سایت های مختلف خبری (و نه تنها خبری)، چنین چارچوب سیستمی با یک درخواست به بازدیدکنندگان ارائه می شود:
پنجره سیستم Google Chrome درخواست مجوز برای ارسال اعلانها از سایت.
من صمیمانه این کانال تحویل محتوا (یا جذب کاربر، هر چه می خواهید نامش را بگذارید) یکی از امیدوارکننده ترین ها می دانم. شاید حتی تا چند سال دیگر، این اعلانهای فشار همان ویژگی اجباری هر سایت خبری با احترامی باشد که امروزه RSS و عموم مردم در شبکههای اجتماعی هستند.
با این حال، امروزه این فناوری هنوز کاملاً جوان است و دستورالعمل های کمی برای استفاده از آن نه تنها در اینترنت داخلی، بلکه در اینترنت خارجی وجود دارد. لازم نیست زیاد دنبال مثال بگردید——حتی خود گوگل، زمانی که Push API را اعلام کرد، یک بیانیه مطبوعاتی ناچیز منتشر کرد تا جایی که اشک می ریخت. و تنها اکنون، پس از چند ساعت جستجو در پرسشهای متداول Google برای توسعهدهندگان، میتوانید اطلاعاتی را جمعآوری کنید تا حداقل اسکریپتهای کاری برای ارسال اعلانهای فشار به خوانندگان خود جمعآوری کنید.
چگونه می توان چنین اعلان های فشاری را برای سایت خود ایجاد کرد؟ در اینجا دو راه وجود دارد: استفاده از خدمات شخص ثالث (آنها از قبل وجود دارند و برخی از آنها بسیار خوب هستند) یا راه حل خود را ایجاد کنید. از آنجایی که من طرفدار حداقل استفاده از خدمات شخص ثالث در سایت هستم، مسیر ما به شهر یک نتیجه قطعی بود.
اما، برای عدالت، شایسته است چند کلمه در مورد راه حل های بیرونی گفته شود. اعتراف میکنم که من این بازار را زیاد مطالعه نکردهام (دلیل آن دقیقاً در بالا ذکر شد)، اما نمیتوان به سرویس OneSignal اشاره نکرد که جذابترین ویژگی آن این است که خدمات آنها کاملاً رایگان است - - آنها از طریق فروش دادههای مربوط به آن درآمد کسب میکنند. بازدیدکنندگان سایت مشتری یک سرویس Jeapie نیز وجود دارد، آنها بازاریابی بسیار شایسته ای در کنار خود دارند و به عنوان یک قاعده، بازخورد خوب. با این حال، شایان ذکر است که زمانی مدوزا خدمات آنها را رد کرد - این پلت فرم به سادگی برای حجم فشارهایی که باید برای مخاطبان عظیم مدوزا ارسال می شد آماده نبود.
پیاده سازی. دریافت اعتبار از گوگل
در داده های منبع، یک سایت نوشته شده در ریل 3.2.8و وظیفه ایجاد یک فشار دهنده اعلان برای کروم روی آن است.
اولین قدم این است که سایت را به HTTPS (پروتکل ابرمتن امن) منتقل کنید، یعنی یک گواهی SSL برای سایت خود بسازید. بدون آن، اعلانهای فشاری کار نمیکنند (با http معمولی بررسی نشد، اما همه جا اینطور نوشته شده است). من در مورد اینکه SSL چیست، با چه چیزی خورده می شود، نحوه قرار دادن گواهی بر روی سرور و اتصال آن نخواهم نوشت - اینترنت مملو از مقالات مشابه است. من فقط StartSSL را برای این اهداف توصیه می کنم. این یک مرجع صدور گواهینامه خوب است که همه مرورگرهایی که من می شناسم با آن دوست هستند، با یک روش ثبت نام و تأیید عمدا ساده (فقط باید حداقل را بدانید زبان انگلیسی) مطلقاً بدست آوردن گواهی SSL رایگان سطح ورودی، که می تواند شامل پنج زیردامنه دیگر (sic!) باشد.
بنابراین، ما گواهی را دریافت کردیم و Nginx یا Apache خود را بر اساس آن پیکربندی کردیم. اکنون در نوار آدرسمرورگر کنار آدرس سایت ما سبز روشن است، زیباترین قفل کوچک، کتیبه https://,و اگر به پول اهمیت می دهید نام سازمان.
بعد می رویم به Google Cloud Platform، جایی که ما ثبت نام می کنیم پروژه جدید، نام آن را برای مثال MySite-Push قرار دهید.
یک پروژه جدید در Google Cloud Platform ایجاد کنید
پس از چند ثانیه که پروژه ایجاد شد، از طریق بخش در حال اتصال به Google API، ارتباط دادن API را فعال و پیکربندی کنیدبه قسمتی بروید که در آن لیست کامل است روش های APIبرای همه خدمات گوگل. در آنجا باید روش را وارد کنیم Google Cloud Messagingاز بخش Mobile API.
روش Google Cloud Messagingاز بخش Mobile API
به احتمال زیاد، هنگام اتصال به روش، گوگل از شما می خواهد که داده های اضافی را ثبت کنید. به عنوان مثال، از شما میخواهد که مشخص کنید API از کجا فراخوانی میشود، سپس نوع کنترلکننده مورد نیاز خود را مشخص میکنیم (مثلاً سرور وب).
سپس IP سرور را مشخص می کنیم (در صورت درخواست) و یک کلید خصوصی ایجاد می کنیم که برای مجوز دادن به درخواست ها استفاده می شود. البته در آینده به این کلید نیاز خواهیم داشت.
کلید خصوصی برای دسترسی به Google API ایجاد شد
پس از فشار دادن دکمه آمادهما خود را در صفحه ای خواهیم دید که باید دامنه را مشخص کرده و حقوق آن را از طریق ابزارهای کنسول جستجو تأیید کنیم. همچنین مقالات زیادی در اینترنت در این مورد وجود دارد و این روش خود بصری است. پس بیایید اینجا متوقف نشویم.
در واقع، ما به هیچ چیز دیگری از Google Cloud Platform نیاز نداریم. کلید و شناسه
پیاده سازی. راه اندازی اولیه سایت
اکنون در پوشه ریشهسایت ما باید یک فایل اضافه کنیم manifest.jsonکه موارد زیر را بیان خواهد کرد :
( "نام": "mysite.ru تست فشاری"، // نام سایت "نمایش" : "مستقل"، // محل نمایش اعلانها را مشخص کنید "gcm_sender_id": "258466066904" // همان شناسه برنامه در Google Cloud Platform )
این بیشترین است حداقل لازماطلاعات برای مانیفست می توانید گوگل کنید و چه پارامترهای اضافی را می توانید در آنجا مشخص کنید.
خوب، به بخش اضافه کنید
متا تگ با پیوند به مانیفست:
حالا در همان مکان، در پوشه root، یک فایل ایجاد کنید push.js،که کد زیر را وارد می کنیم:
"استفاده سخت"؛ تابع SendPushMe() ( if ("serviceWorker" در navigator) ( console.log ("Service Worker پشتیبانی می شود"); navigator.serviceWorker.register("/sw.js").then(function() ( return navigator.serviceWorker .ready; )).then(function(reg) ( console.log("Service Worker is ready:^)"، reg); reg.pushManager.subscribe((userVisibleOnly: true)).then(function(sub) ( console.log("endpoint:"، sub.endpoint); $.get("https://mysite.ru/createpushadresat?adresat=" + sub.endpoint، function(data) ()); )); )) .catch(function(خطا) ( console.log("خطای Service Worker:^("، خطا)); ) )
این کد چه کاری انجام می دهد؟ هنگام فراخوانی متد SendPushMe()، بررسی میکند که آیا مرورگر از اشتراک اعلانهای فشاری پشتیبانی میکند یا خیر. سپس، اگر این کار را کرد (در لاگ-کنسول توسعه دهنده، پیام « Service Worker پشتیبانی می شود"، در غیر این صورت یک پیام خطا در آنجا ظاهر می شود)، سعی می کند ثبت نام کند کارگر خدماتکه به زودی در /sw.jsدر این لحظه است که کاربر درخواستی را از مرورگر برای تأیید عملکرد می بیند. سپس در صورت موافقت کاربر، کارگر ثبت نام می شود و در آدرس https://mysite.ru/createpushadresatدرخواست GET در یک متغیر نشانییک شناسه مرورگر منحصر به فرد ارسال خواهد شد. همچنین در کنسول ورود به سیستم توسعه دهنده نمایش داده خواهد شد.
حالا بیایید یک Service Worker ایجاد کنیم. این فایل خواهد بود sw.jsدر پوشه ریشه:
"استفاده سخت"؛ self.addEventListener("نصب"، تابع(رویداد) ( event.waitUntil(self.skipWaiting()); )); self.addEventListener("push"، تابع (رویداد) ( event.waitUntil(fetch("/latest.json").then(function (response) ( if (response.status !== 200) (consol.log(" خطای درخواست Latest.json: " + answer.status)؛ ارور جدید Error(); ) return.json().then(function (data) ( if (data.error || !data.notification) (consol.error ("خطای فرمت Latest.json."، data.error؛ خطای جدید را پر کنید()؛ عنوان var = data.notification.title؛ var body = data.notification.body؛ var icon = "https://mysite. ru/my_beautiful_push_icon.png"; return self.registration.showNotification(title, ( body: body, icon: icon, data: ( url: data.notification.url ) )); )).catch(function (err) (console .error("خطای بازیابی اطلاعات"، err)); ))))); self.addEventListener("notificationclick"، تابع (رویداد) ( event.notification.close(); var url = event.notification.data.url; event.waitUntil(clients.openWindow(url)); ));
این کد پس از فراخوانی یک اعلان ایجاد می کند که داده های آن از فایل گرفته شده است latest.jsonواقع شده در https://mysite.ru/latest.json.اگر درخواست این فایل با شکست مواجه شود، یا سایت با json نامعتبر پاسخ دهد، ورودی مربوطه در کنسول گزارش برنامهنویس ظاهر میشود. اگر همه چیز خوب باشد، فشار ایجاد می شود. فشار از متغیرها تشکیل می شود بدن- این یک پیام کوتاه است، عنوان- عنوان فشار، آدرس اینترنتی- لینکی که کاربر هنگام کلیک بر روی اعلان دنبال می کند و آیکون- یک نماد زیبا و لذت بخش (ترجیحا مربع، با ضلع حداقل 150 پیکسل) که لوگوی وب سایت را نشان می دهد. و به طور خاص در این فیلمنامه آیکون- پارامتر استاتیک، و همه موارد دیگر به صورت پویا از به روز می شوند latest.json.
می توانید اسکریپت را کمی انتقال دهید تا نماد نیز یک پارامتر پویا باشد، اما به نظر من این کاملاً اضافی است، بهتر است اعلان ها را برند کنید تا تصویری ارائه دهید که واقعاً نمی توانید آن را در یک کوچک ببینید. فشار دادن.
و در نهایت، ما ایجاد می کنیم latest.jsonکه اطلاعات مربوط به اطلاعیه ها از آن گرفته می شود. من فکر می کنم حدس زدن اینکه در پوشه ریشه قرار دارد دشوار نیست. و اینم محتوایش:
("اعلان":("url":"https://mysite.ru/posts/1"،"title":"اخبار جالب"،"body":"ما یک اشتراک عالی برای Chrome ایجاد کرده ایم")، "_id" :319)
من فکر می کنم هیچ فایده ای برای توضیح اینکه چه چیزی در این json وجود دارد وجود ندارد، به هر حال همه چیز روشن است.
در تئوری، سایت ما، یا بهتر است بگوییم قسمت جلویی آن، تقریباً در حال حاضر کاملاً آماده است. تنها کاری که باید انجام دهید این است که یاد بگیرید چگونه به Google بگوییم که بهروزرسانیهای جدیدی داریم تا آنها نیز به نوبه خود مرورگرهای مشترکان ما را در مورد آن مطلع کنند. و، البته، به صورت پویا به روز رسانی ما latest.json. با این حال، این در قسمت بعدی است.
P.S. به هر حال، می توانید همین الان با SendPushMe() تماس بگیرید و ببینید چه اتفاقی می افتد. برای این کار، به عنوان مثال، می توانید یک لینک ایجاد کنید که با کلیک بر روی آن، این متد فراخوانی و فراخوانی می شود:
با SendPushMe تماس بگیرید
و اگر همه چیز به درستی انجام شود، پس از کلیک بر روی چنین پیوندی، یک پنجره سیستم با یک درخواست ظاهر می شود:
اما هنوز برای دادن اجازه عجله نکنید. روی ضربدر کلیک کنید و فعلا پنجره را ببندید.
اگر قبلا کلیک کرده اید، سپس تنظیمات سایت را باز کنید (با کلیک بر روی قفل سبز رنگ در نوار آدرس، اگر کسی نمی داند) و در مورد "هشدارها"، تنظیمات جهانی را به حالت پیش فرض برگردانید ("پرسش").
اکنون کنسول توسعه دهنده را باز کنید F12 -> کنسول. سپس، دوباره روی پیوند «Call SendPushMe» کلیک کنید.
کنسول باید دو خط را پشت سر هم نشان دهد که حاوی " Service Worker پشتیبانی می شود"و" کارگر سرویس آماده است" به ترتیب. و خود مرورگر باید دوباره درخواست مجوز کند. و حالا می توانید رضایت خود را بدهید.
در نتیجه، سه مورد از این قبیل باید در کنسول توسعه دهنده شما ظاهر شود:
فشار ورود به سیستم اشتراک مرورگر کروم
اگر یادتان باشد فیلمنامه push.jsیک درخواست GET ارسال می کند. نقطه پایانی است که با این درخواست به سرور ارسال می شود. کمی بعد به سایت یاد می دهیم که آنها را به خاطر بسپارد تا بتوانیم با استفاده از این شناسه ها فشار ارسال کنیم.
الان چی داریم؟ ما یک مشترک کامل برای اطلاعیه های سایت داریم و اکنون می توانیم شناسه مشترکین را ایزوله کنیم. حالا خود خدا به من گفت سعی کنم برای خودم اعلان بفرستم.
برای انجام این کار، باید به گوگل در مورد اعلان جدید بگویید، و او نیز به نوبه خود، مشترکین ما (یا یک نفر، همانطور که اکنون داریم) را در این مورد مطلع می کند.
Google با یک درخواست POST ویژه مطلع می شود https://gcm-http.googleapis.com/gcm/sendدر اینجا به این شکل:
Content-Type:application/json Authorization:key=A...A //کلید خصوصی برنامه ما که در قسمت آخر دریافت کردیم. ( "به" : "bk3RNwTe3H0:CI2k_..."، // شناسه منحصر به فرد مشترک. "داده" : ( "عنوان": "پرتغال در مقابل دانمارک"، // داده اعلان "متن": "5 به 1" ) ، )
همانطور که ممکن است حدس بزنید، این درخواست به یک مشترک خاص اطلاع می دهد و داده های اعلان مستقیماً در درخواست ارسال می شود. با این حال، محتوای اعلان ما از latest.json گرفته شده است. بله، و ارسال یک درخواست شخصی برای هر مشترک بیش از حد جسورانه است. اگرچه، اگر نیاز به ارسال اعلانهای فردی و شخصی دارید، این گزینه برای شما مناسب است. با این حال، ما درخواست ها را به صورت دسته ای ارسال می کنیم که برای آنها از طرح زیر استفاده می کنیم:
Content-Type:application/json Authorization:key=A...A //کلید خصوصی برنامه ما که در قسمت آخر دریافت کردیم. ( "registration_ids" : ( [...] // آرایه شناسه های مشترکین. )
در این حالت، از آنجایی که درخواست حاوی دادههایی برای خود اعلان نیست، مرورگر با Service Worker تماس میگیرد که از آن اطلاعات دریافت میکند.
بیایید یک درخواست از طریق ترمینال (کنسول SSH) ایجاد و ارسال کنیم:
حلقه--header "Authorization: key=AI...3A" \ --header Content-Type:"application/json" \ https://gcm-http.googleapis.com/gcm/send \ -d "(\" register_ids\":[\"cym...W3\"])"کنسول SSH با یک درخواست POST ارسال شده و Push حاصل
این اسکرین شات هم خود درخواست و هم نتیجه آن را نشان می دهد - اعلانی که یک ثانیه بعد آمده است.
بله، ما این کار را انجام دادیم———مهمترین و به نظر می رسد، قسمت مبهم پشت سر. کار بیشتر در این جهت بستگی به این دارد که سایت شما روی چه چیزی نوشته شده است. و اگر سایت شما روی Rails نوشته شده باشد، ما هنوز در راه هستیم. اگر نه، پس برای خداحافظی عجله نکنید: در قسمت پایانی بعدی، به آن سوالات در مورد اعلان های وب باز خواهم گشت که راه حل آنها برای توسعه دهندگان وب با هر تخصصی مفید خواهد بود.
بنابراین، Chrome Push Notifications برای سایت Ruby On Rails
اول بگم که این نمونه کد برای سایت Rails 3.2.8 معتبره!
در اصل، ما باید انجام دهیم:
- عملکرد به طوری که سایت ما شناسه های مشترک را به خاطر می آورد.
- مدلی برای ایجاد اعلان های فشار.
- به روز رسانی پویا latest.json.
- خوب، چند خط کد به کنترلر اضافه کنید، که هنگام ایجاد یک Push جدید، یک درخواست POST به سرور Google ارسال می کند.
اگر فراموش کردید، بگذارید یادآوری کنم که در قسمت اول بلافاصله به آن اضافه کردیم push.jsیک خط برای تشکیل یک درخواست GET به سایت ما، که شناسه مرورگر هر فرد تازه امضا شده را ارسال می کند.
حالا بیایید مطمئن شویم که سایت ما متوجه شده است که چه نوع درخواستی است و داده ها را ذخیره می کند. اول از همه، بیایید یک مدل و کنترلر برای مشترک پوش:
Rails g مدل pushsubscriber browserkey:string rake db:migrate rails g controller pushsubscribers ایجاد حذف
تطبیق "/createpushadresat"، با: "pushsubscribers#create"، از طریق: : گرفتن
اکنون سایت ما درخواست های دریافتی GET را به کنترلر ارسال می کند مشترکین را فشار دهید ، جایی که با روش پردازش می شود ایجاد کردن . بیایید آن را تنظیم کنیم:
دف ایجاد کردن@newsubscriber = Pushsubscriber.new(:browserkey => URI(params[:adresat].to_s).path.split("/").last) اگر@newsubscriber.save؟ render:text => "OK" دیگر render:text => "شکست" پایان پایانفوراً باید بگویم که این کد فقط برای این است که نشان دهد در کدام جهت باید توسعه پیدا کنید. تقریباً هیچ چیز را بررسی نمی کند و از اعتبار سنجی و regexps استفاده نمی کند - اینطور از آن استفاده نکنید. فقط بررسی می کند که پارامتر ورودی حاوی داده ها به صورت پیوند باشد و سپس آخرین بخش بعد از اسلش از این پیوند استخراج شده و در پایگاه داده ذخیره می شود. به این شکل است push.jsانتقال می دهد نقطه پایان. و در آخرین بخش (بعد از اسلش) نقطه پایانی است که شناسه مرورگر موجود است.
بنابراین، مردم شروع به مشترک شدن در بهروزرسانیهای ما کردند و اکنون پایگاه داده ما با شناسهها پر شده است. زمان شروع ارسال اعلان ها به آنها:
Rails g scaffold notification title:string bodytext:string url:string succescount:integer rake db:migrate
این دستور Scaffold یک مدل حداقل کار برای ما ایجاد می کند اطلاعبا زمینه ها عنوان,متن بدنه,آدرس اینترنتیو تعداد موفقیت. اولین سه - به ترتیب عنوان، متن و لینک هشدار آینده، و تعداد موفقیت- تعداد فشارهای ارسال شده با موفقیت، که گوگل با مهربانی به ما خواهد گفت. یک کنترلر با نماهایی برای این مدل نیز ایجاد خواهد شد. البته، در آنجا همچنان باید نماهای تولید شده را در طراحی کلی سایت وارد کنید و کنترلر را "حصار" کنید. before_filterبه طوری که فقط افرادی با دسترسی مناسب بتوانند «فشار» کنند. اما این به شما بستگی دارد که به صورت فردی تصمیم بگیرید. و اکنون ما کمی هستیم (در واقع اصلا زیاد نیست)اصلاح روش ایجاد در notifications_controller.rb:
نیاز"Open-uri" نیاز"multi_json" نیاز"اوری" دف ایجاد کردن@notification = Notification.new(params[:notification]) اگر@notification.save @adresats = Pushsubscriber.all.collect(&:browserkey) @keys = "("registration_ids":" [ایمیل محافظت شده] _json+")".as_json uri = URI.parse("https://android.googleapis.com/gcm/send") http = Net::HTTP.new(uri.host,uri.port) http.use_ssl = true req = Net::HTTP::Post.new(uri.path) req["Authorization"] = "key=A...A" # کلید خصوصی را اینجا وارد کنید req["Content-Type"] = "application/json" " res = http.request(req، @keys) parsed_json = ActiveSupport::JSON.decode(res.body) @notification.update_attribute(:success، parsed_json["success"].to_i) پایان redirect_to notifications_path پایاناین کد، اگر یک اعلان جدید (notification@) ایجاد و ذخیره شود، یک درخواست POST را ایجاد و به Google ارسال می کند (دقیقاً همانطور که در بالا انجام دادیم) که در آن همه شناسه های مشترک ما با فرمت json مطابق با مشخصات Google ارسال می شود. سپس گوگل باید با json خود به ما پاسخ دهد. که از آن بخش موفقیت تجزیه می شود، که از آن تعداد - تعداد فشارهای ارسال شده با موفقیت ذخیره می شود. بخش شکست نیز به آنجا منتقل می شود، که بر این اساس، تعداد فشارهای تحویل نشده به یک دلیل یا دیگری در آن ذخیره می شود. به طور کلی، می توانید خودتان ببینید که گوگل چه داده هایی را منتقل می کند، شاید تصمیم بگیرید چیز دیگری را ذخیره کنید.
و درست مثل دفعه قبل کد داده شدهاین را در نظر نمی گیرد که Google ممکن است پاسخ ندهد یا با پیام خطا پاسخ دهد و json معتبر برای تجزیه نباشد. چنین مواردی را در توسعه خود در نظر بگیرید.
خوب، اکنون ما سعی می کنیم با استفاده از فرم Notification.new (ایجاد شده توسط Scaffold) و… Voilà یک فشار در سایت خود ایجاد کنیم! سیستم در حال کار است - ما اعلانی دریافت کردیم!
محتوای واقعی برای این اعلان هنوز از استاتیک گرفته شده است latest.json. آخرین چیزی که باقی می ماند این است که این فایل را مجبور کنید به صورت پویا به روز شود. چگونه انجامش بدهیم؟ بسیار ساده، زیرا ما قبلاً یک مدل Notification داریم و در latest.jsonباید دقیقاً حاوی آخرین اعلان ما (یعنی Notification.all.last) باشد. برای انجام این کار، استاتیک last.json خود را از پوشه ریشه سایت حذف کرده و به آن اضافه می کنیم routes.rbمسیر زیر:
مطابقت "/latest.json"، با: "notification#latestpush"، از طریق: :get
همین الان است latest.jsonبا روش تولید خواهد شد آخرین فشاردر کنترلر اطلاع. بیایید این روش را ایجاد کنیم:
Def latestpush @push = Pushnotification.all.last render json: "("notification":("url":"" [ایمیل محافظت شده] _s+"","عنوان":"" [ایمیل محافظت شده] _s+"""""بدن":"" [ایمیل محافظت شده] _s+"")،"_id":" [ایمیل محافظت شده] _s+")".as_json پایان
حالا بیایید یک اعلان دیگر از طریق فرم Notification.new ایجاد کنیم. و در نهایت، ما شاهد فشاری در گوشه مانیتور هستیم که دقیقاً همان محتوایی است که به فرم وارد شده است.
به نظر می رسد که این همه است؟ همه چیز، اما نه کاملا. اولا، ما مشترک شدیم، اما لغو اشتراک نکردیم - راست باشید و به بازدیدکنندگان سایت این فرصت را بدهید. ثانیا، ما یک اشتراک ایجاد کردیم، اما هنوز اطلاعاتی ندارد و به همه نشان داده می شود، نه فقط کاربران کروم، که اشتراک برای آن انجام شده است. و سوم اینکه ما یک اسباب بازی بسیار جالب در وب سایت خود ساخته ایم که قوانین استفاده خاص خود را دارد. این تمام چیزی است که در قسمت بعدی، سوم و در نهایت، آخرین قسمت داستانمان درباره آن صحبت خواهیم کرد Chrome Push API.