Google Chromeтъй като версия 42 поддържа Push API чрез сървъри на GoogleИзползване на GCM Вероятно вече сте виждали тези подкани за достъп до известия. Ако разрешите достъп, сайтът ще може да ви изпраща известия. Тази функция е съвсем нова и малко хора знаят за нея, но според мен вече има големи недостатъци:
  • Всеки сайт изисква разрешения в браузъра, трудно е да контролирате колко източника могат да ви изпращат известия сега, всеки има собствен фонов процес, който се събужда отделно, няма история на получените известия или филтриране, няма синхронизиране на абонаментите между устройства
  • Сайтовете трябва да изпращат известия директно до устройствата, да наблюдават уместността на базата данни на устройствата, да наблюдават устройството на всеки потребител поотделно
  • Тази функция работи само на сайтове с SSL.

Междинен сервиз, който се грижи за всички тези функции, може да реши възникналите проблеми.

Малко теория

Основната статия, на която всъщност направих тази функция, може да бъде намерена
Накратко, браузърът създава Service-Worker (достъпен от Chrome 40), това е фонов процес в JS. Той не работи постоянно във фонов режим, а отговаря на различни заявки отвън. Например, когато пристигне насочено съобщение. Разбира се, той не изисква отворена страница. Освен това работи дори ако браузърът е затворен (е, не напълно затворен, но във фонов режим.)

Когато пристигне Push съобщение, браузърът показва известия. Това е всичко. Това ви позволява напълно да приложите получаването на насочени известия без никакви приложения, освен това работи на android в мобилен хром! От очевидните недостатъци могат да бъдат идентифицирани в този моментфактът, че не е възможно да се изпрати полезен товар в насочено съобщение, т.е. самото съобщение. Google отдава това на проблеми със сигурността и съобщава, че в Chrome 44 проблемът е напълно разрешен и браузърът ще може да получава данни директно. Също така, според някои доклади, ако браузърът е бил затворен, тогава заявката няма да достигне до него. Този проблем се решава чрез изхвърляне на всички известия, които не са били потвърдени при всяко следващо съобщение.

Как PushAll решава проблема

Можете да изпращате известия чрез Push API дори без уебсайт. Това означава, че можете да създадете канал и да изпращате известия ръчно или от сървъра чрез curl, или като свържете RSS емисия. В този случай потребителят разрешава достъп за изпращане до сайта PushAll.
В същото време разработчикът не трябва да мисли до кого изпраща известието. В приложение за Android, в хром добавка или директно чрез Push API. Той може да изпрати съобщение до дузина потребители, но всъщност то ще отиде до всяко от 2-3 устройства на всеки потребител. В бъдеще това ще включва други браузъри и други платформи като iOS и WP.

Тестване

Функцията е написана точно вчера и затова е необходимо тестване.

За да тествате известия чрез Push API, трябва да отидете на уебсайта PushAll.ru и да влезете с вашия акаунт в Google.

Веднага след като влезете, ще бъдете отведени до директорията на каналите. Горе вдясно има превключвател, който включва новата функция.

След като бъде активиран, Chrome ще ви помоли за достъп до известията. След това трябва да отидете в раздела на профила и да „пингувате“ устройството

Пишете ми на лични или в коментарите как работят известията. Някои хора имаха проблеми с известията и бих искал да поправя ситуацията. Също така проверете известията на вашия Android смартфон. Докато тествате, мисля, че ще намерите няколко интересни канала в каталога.

Веднага, за да няма въпроси: не е необходимо да получавате всички известия от канали. Абонирахте се за канала, отворих го отново - отворих филтъра, влязох ключови думи. За онези теми, които са важни за вас, на първо място, известията ще бъдат изпратени незабавно до устройствата, а останалото можете да прочетете от самите сайтове (това се отнася например за канала SoHabr или каналите за телевизионни сериали)

перспективи

Тази функция ви позволява да достигнете до голяма аудитория от потребители. Много хора смятат, че е трудно да инсталират приложение или добавка, но натискането на няколко бутона не е трудно.
В бъдеще ще напиша специална джаджа за сайтове. Ще можете да правите 4 неща наведнъж с едно кликване.
  • Регистрирам.
  • Да вляза
  • Абонирай се
  • Активирайте Push API известия в браузъра.
Тоест, потребителят ще щракне върху бутона, ще бъде помолен за достъп до акаунт в Google, ще бъде помолен за достъп до известия - това е всичко. Потребителят е готов да получава известия. Освен това, ако след това потребителят изтегли приложението за друга платформа, той ще продължи да получава известия от вашия сайт, добре, докато не се отпише от тях в лична сметка. В същото време моята услуга ви позволява да изпращате дори до мобилни устройстваизвестия без инсталиране на приложението!

Push - известие, какво е това? Това е вид известие, което се появява, след влизане в определени сайтове, в горния десен или ляв ъгъл на прозореца на браузъра, като предлага да се абонирате за новини, актуализации на сайта или други промени в портала, който сте посетили. Като цяло, казано по-просто, това е изскачащ прозорец с призив за абониране за сайта.

Определено нямам нищо против всякакви абонаменти. Например, ако ви харесва и е за вас полезен материал, който е публикуван на нашия уебсайт, можете лесно да се абонирате за нас, като използвате същия RSS или да използвате формата за абонамент по пощата, както и да се присъедините към нас в VK групаили ни последвайте на YouTube. И най-важното е, че можете да направите това по собствена инициатива, а не защото има прозорец с думата " Абонирайте се, абонирайте се, абонирайте се».

Популярността на такива push известия едва започва да расте, в резултат на което все повече сайтове се опитват да въведат подобни сами. Сигурен съм, че всички новинарски сайтове имат тази функция активирана от дълго време.

Най-изненадващото е, че модата за известия от този вид току-що започна да набира скорост и вече е доста уморена от всички. Мнозина ги сравняват със същото натрапчива рекламаи изскачащи прозорци, които само пречат и дразнят.

Така че в този урок ще ви покажа как да изключите известието за абонамент в настройките на вашия браузър и да се отървете завинаги от този досаден изскачащ прозорец.

Деактивиране на насочени известия в Mozilla Firefox

По принцип изключването на показването на известия в почти всички браузъри става директно в настройките. Но Firefox се оказа изключение, да, в настройките можете да изключите известието, като поставите отметка в квадратчето „Не безпокойте“ в настройките на съдържанието, но те ще бъдат блокирани само докато не рестартирате браузъра.

Веднага след като отворите отново Firefox, отметката, която сте поставили преди това, автоматично се премахва и всичко започва отначало. Разбира се, тази опция няма да отговаря на всички, така че за такива потребители, които искат да деактивират насочените известия веднъж завинаги, трябва да направите следното:

Стойността, която сте задали на false, означава, че повече няма да се притеснявате от абонамента за получаване на насочени известия.

Блокиране на насочени известия в Google Chrome

В Chrome изключването на известията е много по-лесно, защото можете да го направите в обичайните настройки и не е необходимо да влизате в конфигурацията на браузъра.


Ако е необходимо, рестартираме браузъра и се радваме на липсата на постоянно изскачащи предложения за получаване на известия от сайта, който сте посетили.

Отървете се от насочени известия в браузъра Yandex

Следващият ще бъде не по-малко известен браузър Yandex. Със сигурност много хора знаят, че за създаването на този браузър е използван същия двигател като в Chrome, така че дори настройките са почти идентични.


Например настройките ми бяха запазени по някаква причина само от втория път, не знам с какво е свързано, може би вместо бутона „Край“ щракнах върху кръста и просто затворих прозореца, в резултат на чиито настройки не са запазени. Е, основното е, че всичко се получи втори път и заявката за абониране за известия изчезна.

Възможно ли е да деактивирате насочените известия в Opera?

И разбира се, няма да заобиколим операта. Знам, че много голям брой потребители все още предпочитат да го използват. Ето защо, ето инструкция за деактивиране на насочени известия за Opera.


Като цяло настройките дори не се различават много от предишните браузъри, но по принцип това не е важно, основното е, че сега заявките за получаване на известия от сайта вече няма да ни притесняват.

Как да деактивирате push (push) известия в Яндекс браузър, Chrome, Firefox и Opera

Как да изключите насочените известия - този въпрос тревожи някои потребители, които виждат известия в браузъра, след като влязат в много сайтове в Интернет. Push технологията е предназначена да разпространява информация в Интернет от доставчика, в този случай сайта, до потребителя на този сайт.

Push известията за сайта са необходими, за да информират посетителите на сайта за новините, главно за пускането на нови статии. В този случай посетителят получава известия от сайта своевременно и може веднага да прочете новината.

Известията от името на сайта се изпращат чрез услуга на трета страна, която организира доставката на известия до компютрите на потребителите.

Какво е насочено известие на компютър? Ако посетителят на сайта се съгласи да получава съобщения от този ресурс, тогава от време на време на работния плот на потребителя се появяват известия за новините на този уебсайт.

Как работят насочените известия

При посещение на сайт, който има активирана функция за изпращане на известия, посетителят всеки път вижда заявка за разрешаване на показването на известия, в която се предлага да щракнете върху бутоните „Разрешаване“ или „Блокиране“. Имената на бутоните може да са различни, но значението е едно и също навсякъде.

Посетителят на сайта може да игнорира този изскачащ прозорец, тъй като прозорецът за заявка за насочено известие е малък и не пречи на сърфирането в сайта.

Появата на такива прозорци е различна в зависимост от услугата, която изпраща известия от този сайт.

Щраквайки върху бутона „Разрешаване“, вие се съгласявате да получавате насочени съобщения на вашия компютър.

В областта за уведомяване, на работния плот на компютъра на потребителя, ще се появяват известия за новини на този уебсайт. Обикновено това е съобщение за пускането на нова статия. Някои сайтове злоупотребяват с възможността да изпращат сигнали, като уведомяват за всичко подред, понякога изпращайки ненужна информация.

След като получи насочено известие, потребителят може да отиде на сайта, за да прочете статията, или да затвори известието, като игнорира това съобщение. Такива известия от сайтове практически не пречат на работата на компютъра, тъй като се показват в областта за уведомяване и се затварят сами след кратък период от време.

За да попречите на искането за разрешение за изпращане на предупреждения от този сайт да не се показва повече, когато посетите този уебсайт отново, щракнете върху бутона „Блокиране“.

Ако вече получавате насочени съобщения от конкретен сайт, тогава потребителят може сам да деактивира насочените известия в своя браузър, в който е разрешил получаването на известия на своя компютър.

Как да премахнете насочени известия след получаване на сигнал

В много известия, в зависимост от настройките на услугата, която изпраща известия, можете да деактивирате насочените известия директно в прозореца на отвореното съобщение.

За да направите това, щракнете върху иконата за настройки (зъбно колело) и след това изберете „Изключване на известията от сайта“.

След това известията от този сайт вече няма да се показват на вашия компютър.

Как да деактивирате насочени известия в Google Chrome

Влезте в настройките на браузъра Google Chrome, превъртете колелото на мишката надолу, щракнете върху връзката „Разширени“.

В секцията „Поверителност и сигурност“ щракнете върху бутона „Настройки на сайта“. В прозореца „Настройки на сайта“, който се отваря, намерете секцията „Известия“.

Тук можете да настроите получаване на сигнали от сайтове. По подразбиране е избрано „Искане на разрешение преди изпращане (препоръчително)“.

За да премахнете насочените известия в Google браузър Chrome, активирайте елемента „Не показвайте предупреждения на сайтове“.

За да предотвратите получаването на сигнали от конкретен сайт, щракнете върху бутона „Добавяне“, който се намира срещу параметъра „Блокиране“.

В прозореца "Добавяне на сайт" въведете адреса на сайта и след това щракнете върху бутона "Добавяне".

За да конфигурирате получаването на насочени съобщения, щракнете върху бутона „Добавяне“, разположен срещу опцията „Разрешаване“.

В прозореца, който се отваря, добавете желания сайт към списъка със сайтове, от които имате право да получавате известия в браузъра Google Chrome.

Как да деактивирате насочени съобщения в Mozilla Firefox (1 начин)

Въведете настройките на браузъра Mozilla Firefox, отворете секцията „Поверителност и сигурност“. В опцията „Разрешения“ отидете до опцията „Известия“.

Поставете отметка в квадратчето до Изключване на известията, докато Firefox не се рестартира. След това Push известията няма да се показват, докато браузърът Mozilla Firefox не бъде деактивиран.

За да управлявате предупрежденията, щракнете върху бутона "Настройки...". В прозореца "Опции - Разрешение за показване на известия" има списък със сайтове, известията от които са разрешени или блокирани.

Ако даден сайт има статус „Блокиране“ до него, тогава известията от този сайт не се показват на вашия компютър, тъй като преди това сте блокирали заявка за изпращане на известия от този сайт.

Ако статусът „Разреши“ е до адреса на сайта, тогава известията от този сайт ще се показват на вашия компютър.

Можете да премахнете всеки сайт от списъка с помощта на бутона Премахване на уебсайт или да премахнете всички сайтове от списъка, като щракнете върху бутона Премахване на всички уебсайтове.

След това новите известия от отдалечения сайт няма да се показват на работния плот на вашия компютър. Когато посетите този сайт отново, откажете заявката за получаване на сигнали.

За да блокирате получаването на нови съобщения от сайтове, различни от изброените в този списък, поставете отметка в квадратчето „Блокиране на нови заявки за изпращане на известия“.

За да завършите конфигурирането на реда, в който се получават известията, щракнете върху бутона „Запазване на промените“.

Как да премахнете насочени известия в Mozilla Firefox (2 начина)

За пълно изключване на известията Браузър Mozilla Firefox, трябва да въведете скритите настройки на браузъра.

Въведете в адресната лента израза: "about:config" (без кавички). В прозореца, който се отваря, кликнете върху бутона "Поемам риска!".

В новия прозорец въведете в полето "Търсене" израза: "dom.webnotifications.enabled" (без кавички), след което натиснете клавиша "Enter".

Тази настройка по подразбиране е "true". Маркирайте линията, щракнете Кликнете с десния бутонмишката, изберете "Превключване" от контекстното меню. Стойността на параметъра ще се промени на "false".

Как да деактивирате насочени известия в Yandex.Browser

Влезте в настройките на браузъра Yandex, отидете в раздела „Сайтове“.

В секцията „Сайтове“ отидете на опцията „Заявки за изпращане на известия“. Тук има три варианта за действие:

  • Показване на заявки за изпращане (препоръчително).
  • Не показвай изпращане на заявки.
  • Автоматично се абонирайте за известия.

Изберете желаната опция, която регулира процедурата за получаване на насочени съобщения. За да деактивирате напълно всички насочени известия в Yandex Browser, изберете опцията „Не показвай заявки за изпращане“.

Ако трябва да конфигурирате получаването на отделни известия, щракнете върху връзката „На други сайтове“. След това в прозореца „Изпращане на известия“ изберете кои насочени известия искате да блокирате и кои да разрешите.

Отворете раздела „Разрешено“ или „Забранено“, като използвате бутона „Добавяне“, добавете връзка към сайта в съответния раздел.

Как да изключите насочените известия в Opera

Влезте в менюто Браузър Opera, щракнете върху елемента контекстно меню"Настройки". След това изберете секцията „Разширени“, щракнете върху „Сигурност“.

Под секцията Поверителност и сигурност изберете опцията Настройки на съдържанието. Намерете опцията „Известия“.

В прозореца за известия опцията „Искане на разрешение преди изпращане (препоръчително)“ е активирана по подразбиране.

Тук трябва да добавите сайта към секцията „Блокиране“ или „Разрешаване“.

Как да деактивирате насочени известия в Microsoft Edge

Влезте в настройките на вашия браузър Microsoft Edge. Изберете „Опции“, В прозореца „Опции“ щракнете върху елемента „Преглед Допълнителни опции". В прозореца „Разширени опции“ изберете „Известия“ и след това щракнете върху бутона „Управление“.

Прозорецът Управление на известията ще покаже сайтове, които искат разрешение за показване на известия. Можете да промените разрешенията за конкретни сайтове.

Заключения на статията

Потребителят може самостоятелно да деактивира насочени (push) известия в браузъра, които получава на работния плот на своя компютър, позволявайки изпращането на известия от конкретен уебсайт.

Push известията се появяват в прозореца на браузъра дори ако сте били офлайн по време на изпращането им. Това е чудесен маркетингов инструмент за популяризиране на вашите бизнес продукти и услуги. Въпреки това, те могат да дразнят потребителите, ако са придружени от звуково известие. Прочетете, за да научите как да ги изключите.

Как да активирате или деактивирате уеб насочени известия в Google Chrome

Отидете в настройките на браузъра

Кликнете върху иконата за настройки от дясната страна на прозореца на вашия браузър и изберете „Настройки“.

Изберете разширени настройки

Превъртете надолу страницата и изберете „Разширени настройки“.

Изберете Настройки на съдържанието

Кликнете върху „Настройки на съдържанието“ в секцията „Поверителност и сигурност“.

Изберете Сигнали

Щракнете върху Сигнали.

Тук можете да добавяте сайтове, чиито сигнали искате да получавате, или да блокирате сайтове, чиито сигнали не ви интересуват.

Също така можете да направите така, че да получавате искане за разрешение за изпращане на известия.

Използвайте насочени известия, за да уведомите клиентите си за налични артикули, разпродажби и най-новите публикации във вашия блог.

И за да не бъдат блокирани вашите известия, изпращайте ги само на тези потребители, които са се съгласили да ги получават.

Push известия в SendPulse

Изпращането на известия в нашата услуга е безплатно - във всяко количество и завинаги! Ако вече правите имейл маркетинг, използвайте push като допълнителен канал за доставка на съобщения. Например изпратихте имейл с отстъпка за специален ден в навечерието на празника, но абонатът не го отвори. Изпратете насочено известие на ден X и ще имате по-добър шанс да увеличите продажбите.

Персонализирайте и сегментирайте известията за персонализирано изживяване, тествайте съобщения, настройте автоматично изпращане след определени събития. Само един ред код на сайт ви отдалечава от високите конверсии и надценките.

От 2015 г. технологията започна бързо да набира популярност. Push APIот Chrome. Все по-често, когато посещават различни новинарски (и не само новинарски) сайтове, посетителите получават такава системна рамка със заявка:

Системен прозорец на Google Chrome, изискващ разрешение за доставяне на известия от сайта.

Искрено считам този канал за доставка на съдържание (или придобиване на потребители, както искате да го наречете) за един от най-обещаващите. Може би дори след няколко години тези насочени известия ще бъдат същият задължителен атрибут на всеки уважаващ себе си новинарски сайт, каквито днес са RSS и публиките в социалните мрежи.

Въпреки това днес тази технология е все още доста млада и има малко насоки за нейното използване не само в местния Интернет, но и в чуждестранните. Не е нужно да търсите далеч за пример - дори самият Google, когато обяви Push API, издаде оскъдно прессъобщение до точката на сълзи. И едва сега, след няколко часа копаене в често задаваните въпроси на Google за разработчици, можете да съберете информация, за да съберете поне работещи скриптове за изпращане на насочени известия до вашите читатели.

Как да направите такива push известия за вашия сайт? Тук има два начина: използвайте услуги на трети страни (те вече съществуват и някои от тях са много добри) или създайте свое собствено решение. Тъй като съм привърженик на минималното използване на услуги на трети страни на сайта, пътят ни към Града беше предрешен.

Но в името на справедливостта си струва да кажем няколко думи за външните решения. Признавам, че не съм проучвал много този пазар (причината е спомената малко по-горе), но не може да не спомена услугата OneSignal, чиято най-атрактивна характеристика е, че услугите им са абсолютно безплатни - те печелят от продажба на данни за посетители на сайта на клиента. Има и услуга на Jeapie, те имат много компетентен маркетинг на своя страна и, като правило, добра обратна връзка. Заслужава обаче да се отбележи, че по едно време Meduza отказа услугите им - Платформата просто не беше готова за количеството натискания, които трябваше да бъдат изпратени до огромната аудитория на Meduza.

Внедряване. Получаване на идентификационни данни от Google.

В изходните данни сайт, написан на Релси 3.2.8и задачата е да се направи натискане на известия за Chrome върху него.

Първата стъпка е да прехвърлите сайта на HTTPS (сигурен хипертекстов протокол), тоест да направите SSL сертификат за вашия сайт. Без него push известията няма да работят (не съм проверявал с обикновен http, но така пише навсякъде). Няма да пиша какво е SSL, с какво се яде, как да поставите сертификат на сървъра и да го свържете - интернет е пълен с подобни статии. Ще препоръчам само StartSSL за тези цели. Това е добър сертифициращ орган, с който всички браузъри, които познавам, са приятели, с умишлено проста процедура за регистрация и проверка (трябва да знаете само минимума английски език), за да получите абсолютно безплатен SSL сертификат начално ниво, който може да включва още пет (sic!) поддомейна.

И така, получихме сертификата и съответно конфигурирахме нашия Nginx или Apache. Сега в адресна лентабраузър до адреса на нашия сайт свети в зелено, най-сладката малка ключалка, надписът https://,и, ако държите на парите, името на организацията.

След това отиваме на Google Cloud Platform, където се регистрираме нов проект, като го наименувате например MySite-Push.

Създайте нов проект в Google Cloud Platform

След няколко секунди, когато проектът е създаден, през секцията Свързване с API на Google, връзка Активирайте и конфигурирайте APIотидете в секцията, където е целият списък API методиза всички услуги на Google. Там трябва да включим метода Google Cloud Messagingот секцията Mobile API.

Метод Google Cloud Messagingот секцията Mobile API

Най-вероятно, когато се свързвате с метода, Google ще ви помоли да регистрирате допълнителни данни. Например, той ще ви помоли да изясните откъде ще бъде извикан API, след което посочваме типа манипулатор, от който се нуждаем (например уеб сървър).

След това посочваме IP адреса на сървъра (ако бъде поискан) и генерираме частен ключ, който ще се използва за оторизиране на заявки. Този ключ, разбира се, ще ни трябва в бъдеще.

Генериран частен ключ за достъп до Google API

След натискане на бутона Готовще попаднем на страница, където ще трябва да посочим домейна и да потвърдим правата върху него чрез инструментите на Search Console. В интернет също има доста статии за това, а самата процедура е интуитивна. Така че нека не спираме до тук.

Всъщност не се нуждаем от нищо друго от Google Cloud Platform. Ключ и ID.

Внедряване. Първоначална настройка на сайта.

Сега в основна папканашия сайт трябва да добавим файл manifest.jsonкойто ще посочи следното :

( "име": "mysite.ru Push тест", // Име на сайта "дисплей" : "standalone", // Посочете къде да се показват известия "gcm_sender_id": "258466066904" // Същият идентификатор на приложение в Google Cloud Platform )

Това е най необходим минимуминформация за манифеста. Можете да потърсите в Google и какви допълнителни параметри можете да посочите там.

Е, добавете към раздела мета таг с връзка към манифеста:

Сега на същото място, в главната папка, създайте файл push.js,където въвеждаме следния код:

"използвайте строго"; функция SendPushMe() ( if ("serviceWorker" в навигатора) ( console.log("Service Worker се поддържа"); navigator.serviceWorker.register("/sw.js").then(function() ( return navigator.serviceWorker .ready; )).then(function(reg) ( console.log("Service Worker е готов:^)", 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(error) (console.log("Service Worker error:^(", error); )); ) )

Какво прави този код? Когато извиква метода SendPushMe(), той проверява дали браузърът поддържа абонамент за насочени известия. След това, ако го направи (в регистрационната конзола на програмиста, съобщението „ Service Worker се поддържа”, в противен случай там ще се появи съобщение за грешка), ще се опита да се регистрира Обслужващ работниккойто ще се появи скоро на /sw.jsТочно в този момент потребителят ще види искане от браузъра за потвърждение на действието. След това, ако потребителят е съгласен, работникът ще бъде регистриран и на адрес https://mysite.ru/createpushadresat GET заявка в променлива адресще бъде подаден уникален идентификатор на браузъра. Той също така ще бъде показан в конзолата за регистрационни файлове на програмиста.

Сега нека създадем Service Worker. Това ще бъде файлът sw.jsв главната папка:

"използвайте строго"; self.addEventListener("инсталиране", функция(събитие) ( event.waitUntil(self.skipWaiting()); )); self.addEventListener("push", function (event) ( event.waitUntil(fetch("/latest.json").then(function (response) ( if (response.status !== 200) ( console.log(" Грешка при заявка на Latest.json: " + response.status); throw new Error(); ) return response.json().then(function (data) ( if (data.error || !data.notification) ( console.error ("Грешка във формата на Latest.json.", data.error); throw new Error(); ) var title = data.notification.title; var body = data.notification.body; var icon = "https://mysite. ru/my_beautiful_push_icon.png"; върнете 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, в регистрационната конзола на програмиста ще се появи съответен запис. Ако всичко е наред, ще се генерира тласък. Push се формира от променливи тяло- това е кратко текстово съобщение, заглавие- натиснете заглавие, URL адрес- връзката, която потребителят ще последва, когато щракне върху известието и икона- красива и възхитителна (за предпочитане квадратна, със страна поне 150px) икона, която ще показва логото на уебсайта. И конкретно в този сценарий икона- статичен параметър, а всички останали се актуализират динамично от latest.json.

Можете да прехвърлите скрипта малко, така че иконата също да е динамичен параметър, но ми се струва, че това ще бъде абсолютно излишно, по-добре е да брандирате известия, отколкото да предоставите изображение, което всъщност не можете да видите в малък тласък.

И накрая, създаваме latest.jsonот които ще се взема информация за уведомления. Мисля, че не е трудно да се досетите, че ще лежи в главната папка. А ето и съдържанието му:

("notification":("url":"https://mysite.ru/posts/1","title":"Готини новини","body":"Направихме страхотен абонамент за Chrome")), "_id" :319)

Предполагам, че няма смисъл да обяснявам какво е какво в този json, така или иначе всичко е ясно.

На теория нашият сайт, или по-скоро неговият интерфейс, вече е почти напълно готов. Единственото, което остава да направим, е да се научим как да кажем на Google, че имаме нови актуализации, така че те от своя страна да информират браузърите на нашите абонати за това. И, разбира се, динамично актуализирайте нашите latest.json. Това обаче е в следващата част.

P.S. Между другото, можете да извикате SendPushMe() точно сега и да видите какво ще се случи. За да направите това, например, можете да създадете връзка, при щракване върху която този метод ще бъде извикан и извикан:

Обадете се на SendPushMe

И ако всичко е направено правилно, след като щракнете върху такава връзка, ще се появи системен прозорец със заявка:

Но все още не бързайте да давате разрешение. Кликнете върху кръста и затворете прозореца за момента.

Ако вече сте щракнали, отворете настройките на сайта (като щракнете върху зелената ключалка в адресната лента, ако някой не знае) и в елемента „Сигнали“ върнете глобалната настройка по подразбиране („Попитайте“).

Сега отворете конзолата за програмисти F12 -> Конзола. След това щракнете отново върху връзката „Call SendPushMe“.

Конзолата трябва да показва два последователни реда, съдържащи „ Service Worker се поддържа" и " Service Worker е готов“ съответно. И самият браузър трябва отново да поиска разрешение. И сега можете да дадете съгласието си.

В резултат на това във вашата конзола за програмисти трябва да се появят три такива записа:

Push абонаментен дневник Браузър Chrome

Ако си спомняте, сценария push.jизпраща GET заявка. Това е крайната точка, която се предава на сървъра с тази заявка. Малко по-късно ще научим сайта да ги помни, за да можем да изпращаме натискания чрез тези идентификатори.

Какво имаме сега? Имаме пълноценен абонат за известия от сайта и вече можем да изолираме идентификаторите на абонатите. Сега самият Бог ми каза да опитам да си изпратя известие.

За да направите това, трябва да кажете на Google за новото известие и той от своя страна ще информира нашите абонати (или един, както имаме сега) за това.

Google е уведомен чрез специална POST заявка до https://gcm-http.googleapis.com/gcm/sendтук в тази форма:

Content-Type:application/json Authorization:key=A...A //Личният ключ на нашето приложение, който получихме в последната част. ( "to" : "bk3RNwTe3H0:CI2k_...", // Уникален идентификатор на абоната. "data" : ( "title": "Португалия срещу Дания", // Данни за известяване "text": "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 "(\" регистрационни_идентификатори\":[\"cym...W3\"])"

SSH конзола с изпратена POST заявка и произтичащото Push

Тази екранна снимка показва както самата заявка, така и нейния резултат - известие, което идва секунда по-късно.

Да, успяхме - най-важната и, изглежда, неясна част отзад. По-нататъшната работа в тази посока ще зависи от това, върху какво е написан вашият сайт. И ако вашият сайт е написан на Rails, тогава ние все още сме на път. Ако не, тогава не бързайте да се сбогувате: в следващата заключителна част ще се върна към онези въпроси по темата за уеб известията, чието решение ще бъде полезно за уеб разработчици от всякаква специализация.

И така, Chrome Push Notifications за Ruby On Rails сайт

Първо, позволете ми да кажа, че този примерен код е валиден за Rails 3.2.8 сайт!

По същество трябва да направим:

  1. Функционалност, така че нашият сайт да помни абонатни идентификатори;
  2. Модел за създаване на push известия;
  3. Динамично актуализиран latest.json;
  4. Е, добавете няколко реда код към контролера, който ще изпрати POST заявка до сървъра на Google при създаване на нов Push.

Ако сте забравили, нека ви напомня, че в първата част веднага добавихме към push.jред за формиране на GET заявка към нашия сайт, която предава ID на браузъра на всяко новоподписано лице.

Сега нека се уверим, че нашият сайт разбира какъв вид заявка е и запазва данните. Първо, нека създадем модел и контролер за push-абонат:

Rails g модел pushsubscriber browserkey:string rake db:migrate rails g контролер pushsubscribers създаване изтриване

Съпоставете „/createpushadresat“, с: „pushsubscribers#create“, чрез: : получавам

Сега нашият сайт препраща входящи GET заявки към контролера push абонати , където ще се обработва по метода създавам . Нека го настроим:

деф създавам@newsubscriber = Pushsubscriber.new(:browserkey => URI(params[:adresat].to_s).path.split("/").last) ако@newsubscriber.save? render:text => "ok" друго render:text => "fail" край край

Веднага трябва да кажа, че този код е само за да покаже в каква посока трябва да се развивате. Той не проверява почти нищо и не използва нито валидатори, нито регулярни изрази - не го използвайте по този начин. Той само проверява дали входният параметър съдържа данни под формата на връзка, след което последният раздел след наклонената черта се извлича от тази връзка и се съхранява в базата данни. В тази форма е push.jпредава крайна точка. И точно в последния раздел (след наклонената черта) на крайната точка се съдържа идентификаторът на браузъра.

И така, хората започнаха да се абонират за нашите актуализации и сега нашата база данни се попълва с идентификатори. Време е да започнете да им изпращате известия:

Rails g scaffold notification title:string bodytext:string url:string succescount:integer rake db:migrate

Тази команда Scaffold ще създаде минимално работещ модел за нас уведомлениес полета заглавие,основен текст,URL адреси броят на успехите. Първите три - съответно заглавие, текст и връзка на бъдещия сигнал, и броят на успехите- Броят на успешно предадените натискания, които Google любезно ще ни съобщи. Ще бъде създаден и контролер с изгледи за този модел. Разбира се, там все пак ще трябва да въведете генерираните изгледи в цялостния дизайн на сайта и да „оградите“ контролера преди_филтър’ami, така че само хора с подходящ достъп да могат да „натискат“. Но това зависи от вас да решите индивидуално. А сега сме съвсем малко (всъщност не много)поправете метода за създаване в 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. Тогава Google трябва да ни отговори със своя json. От който се анализира секцията за успех, от която се съхранява броя - броя на успешно предадените натискания. Там се минава и секцията за неуспех, в която съответно се съхранява броят на недоставените по една или друга причина пушове. Като цяло можете сами да видите какви данни предава Google, може би решите да запазите нещо друго.

И точно както миналия път даден кодне взема предвид, че Google може да не отговори или да отговори със съобщение за грешка и невалиден json за анализ. Обмислете такива случаи във вашето развитие.

Е, сега се опитваме да създадем натискане на нашия сайт, като използваме формата Notification.new (създадена от Scaffold) и… Ето! Системата работи - получихме известие!

Истинското съдържание за това известие все още се взема от статиката latest.json. Последното нещо, което остава, е да принудите този файл да се актуализира динамично. Как да го направя? Много просто, защото вече имаме модел за известия и в latest.jsonтрябва да съдържа точно нашето последно известие (т.е. Notification.all.last). За целта премахваме нашия статичен latest.json от основната папка на сайта и го добавяме към routes.rbследния маршрут:

Съпоставете „/latest.json“, с: „notification#latestpush“, чрез: :get

Това е сега latest.jsonще бъдат генерирани от метода latestpushв контролера уведомление. Нека създадем този метод:

Def latestpush @push = Pushnotification.all.last render json: "("известие":("url":"" [имейл защитен] _s+"","title":"" [имейл защитен] _s+"","тяло":"" [имейл защитен] _s+""),"_id":" [имейл защитен] _s+")".as_json край

Сега нека създадем друго известие чрез формата Notification.new. И накрая виждаме тласък в ъгъла на монитора с точно съдържанието, което току-що беше вкарано във формата.

Изглежда, че това е всичко? Всичко, но не съвсем. Първо, ние се абонирахме, но не се отписахме - бъдете честни и дайте тази възможност на посетителите на сайта. Второ, направихме абонамент, но той все още е неинформативен и се показва на всички, а не само потребители на Chrome, за които се записва. И трето, направихме много интересна играчка на нашия уебсайт, която има свои собствени правила за използване. Това е всичко, за което ще говорим в следващата, третата и накрая последната част от нашия разказ API на Chrome Push.