W jaki sposób aplikacja internetowa może wysyłać powiadomienia push na urządzenia z systemem iOS? [Zamknięte]

121

Pracuję nad aplikacją internetową. Jak mogę wysyłać powiadomienia push do użytkowników iOS, gdy pojawiają się nowe treści?

Frankie
źródło
Jakie powiadomienie teraz?
Szukasz dźwięku? Następnie, jeśli chcesz otrzymać powiadomienie dźwiękowe w trybie zablokowanym telefonu komórkowego; jego nazwa to Specific Push.
mrbengi

Odpowiedzi:

93

Mówiąc dokładniej, aby aplikacja internetowa wysyłała powiadomienia push na urządzenie mobilne, takie jak iPhone, urządzenie mobilne musi być zarejestrowane, aby otrzymywać powiadomienia push dla określonej aplikacji. Rejestracja na potrzeby powiadomień push odbywa się za pośrednictwem aplikacji natywnej i można ją wykonać tylko za pośrednictwem aplikacji natywnej. Gdy aplikacja natywna jest zarejestrowana na potrzeby powiadamiania wypychanego, może wysyłać token autoryzacyjny do serwera, którego można użyć w połączeniu z certyfikatem używanym do obsługi klienta natywnego w celu wysyłania powiadomień push na urządzenie mobilne.

Jak określono w innej odpowiedzi, jedną z opcji jest „zawinięcie” aplikacji internetowej w aplikację natywną. Oznacza to, że utworzyłbyś natywną aplikację, która w zasadzie przedstawia UIWebView (dla iPhone dev) użytkownikowi pokazując twoją aplikację internetową. Chociaż działa to prawie w taki sam sposób, jak natywna przeglądarka, można by dodać możliwość rejestracji w celu otrzymywania powiadomień wypychanych przy użyciu natywnych kontrolek.

Byłoby korzystne dla Ciebie przejrzenie dokumentu powiadomienia wypychanego firmy Apple, ponieważ zawiera on całkiem dobre informacje o działaniu wiadomości push na iPhonie.

Zobacz linki dostarczone przez Petera Hoseya:

Kris Babic
źródło
Dzięki za tę odpowiedź, szukałem tego samego. Czy dotyczy to również sytuacji, gdy dodałeś metatag „Apple-mobile-web-app-ready”?
Mark Knol
1
To zmienia sposób, w jaki
pojawiają
1
od 02/2016 FF, Chrome i Safari mogą rejestrować się w trybie push z aplikacji internetowej.
Yvon Huynh,
9
Nie jest to już prawdą w 2016 roku, możesz wysyłać powiadomienia z aplikacji internetowych. Przeczytaj moją odpowiedź poniżej.
collimarco
Ale widok internetowy nie działa świetnie, brakuje w nim niektórych funkcji i ma więcej błędów niż safari
czarny
46

Nie, tylko natywne aplikacje iOS obsługują powiadomienia push.

AKTUALIZACJA: strony internetowe
Mac OS X 10.9 i Safari 7 mogą teraz również wysyłać powiadomienia push, ale nadal nie dotyczy to iOS. Przeczytaj Podręcznik programowania powiadomień dla witryn internetowych . Zobacz także sesję 614 WWDC 2013 .

Felix
źródło
1
teraz możesz na Maverix i Safari 7!
themihai
Safari 7 z pewnością może otrzymywać te powiadomienia push iw zależności od tego, jaki backend działa Twoja aplikacja internetowa, istnieje kilka usług, które na to pozwalają: pushwoosh.com , pushmonkey.launchrock.com lub możesz wdrożyć własny serwer, który jest bardzo podobny do Powiadomienia push na iOS.
Tudor,
Słyszałem, że nazywa się to Specyficznym Push.
mrbengi
3
Pytanie OP dotyczy w szczególności iOS. Obsługa OSX / macOS jest fajna, ale powiadomienia push nadal działają tylko na iOS z natywnej aplikacji.
squarecandy,
44

Chociaż nie jest to jeszcze obsługiwane w systemie iOS (od iOS 10), strony internetowe mogą wysyłać powiadomienia push do przeglądarek Firefox i Chrome (komputery stacjonarne / Android) za pomocą interfejsu Push API .

Push API jest używany w połączeniu ze starszymi Powiadomieniami sieciowymi do wyświetlania wiadomości. Zaletą jest to, że Push API pozwala na dostarczenie powiadomienia nawet wtedy, gdy użytkownik nie przegląda Twojej witryny, ponieważ są one zbudowane na Service Workerach (skryptach, które są rejestrowane przez przeglądarkę i mogą być wykonywane w tle w późniejszym czasie, nawet po użytkownik opuścił Twoją witrynę).

Proces wysyłania zgłoszenia obejmuje:

  1. użytkownik odwiedza Twoją witrynę (musi być zabezpieczona przez HTTPS): pytasz o pozwolenie na wyświetlanie powiadomień push i rejestrujesz pracownika serwisu (skrypt, który zostanie wykonany po odebraniu powiadomienia push)
  2. jeśli użytkownik udzielił zgody, można odczytać token urządzenia (punkt końcowy), który należy przesłać na serwer i zapisać
  3. teraz możesz wysyłać powiadomienia do użytkownika: Twój serwer wysyła żądanie HTTP POST do punktu końcowego (który jest adresem URL zawierającym token urządzenia). Właścicielem serwera, który odbiera żądanie, jest producent przeglądarki (np. Google, Mozilla): przeglądarka jest na bieżąco z nim połączona i może odczytywać przychodzące powiadomienia.
  4. gdy przeglądarka użytkownika otrzyma powiadomienie, wykonuje Service Worker, który jest odpowiedzialny za zarządzanie zdarzeniem, pobranie danych powiadomienia z serwera i wyświetlenie powiadomienia użytkownikowi

Interfejs Push API jest obecnie obsługiwany na komputerach stacjonarnych i urządzeniach z systemem Android przez przeglądarki Chrome , Firefox i Opera .

Możesz także wysyłać powiadomienia push na pulpit Apple / Safari za pomocą APN. Podejście jest podobne, ale z wieloma komplikacjami (certyfikaty programistów Apple, pakiety push, połączenie TCP niskiego poziomu z APN).

Jeśli chcesz samodzielnie wdrożyć powiadomienia push, zacznij od tych samouczków:

Jeśli szukasz rozwiązania drop-in, proponuję Pushpad , który jest usługą, którą zbudowałem.

Aktualizacja (wrzesień 2017 r.): Apple rozpoczął opracowywanie pracowników usług dla WebKit ( stan ). Ponieważ pracownicy usług są podstawową technologią dla web push, jest to duży krok naprzód.

collimarco
źródło
3
Od iOS 10 (publiczna beta), Mobile Safari nie obsługuje powiadomień push.
Robin Daugherty,
1
To nie była korekta Twojej odpowiedzi, przekazywałem informacje osobom poszukującym wsparcia dla Safari Mobile. Być może pewnego dnia będą obsługiwać powiadomienia push, ale nie od momentu wydania, o którym wspomniałem.
Robin Daugherty
15
Safari to nowy Internet Explorer. Apple to nowy Microsoft. Ugh ...
Costa
1
@Kevincore Nie, niestety nie ma żadnych aktualizacji. Safari na iOS nie obsługuje obecnie web push (maj 2017).
collimarco
1
Naciskajmy na Apple: napisałem kilka akapitów , które możesz skopiować i przesłać do Apple Bug Tracker, aby poprosić Apple o dodanie web push do iOS.
collimarco
10

Google Chrome obsługuje teraz standard W3C dla powiadomień push.

http://www.w3.org/TR/push-api/

BonzaiThePenguin
źródło
Oto dokładny samouczek: developers.google.com/web/updates/2015/03/…
ayke
1
Czy obejmuje to Chrome na iOS? (Oryginalne pytanie dotyczyło iOS)
Simon East
Na razie nie ma iOS na niczym. Muszę korzystać z natywnej aplikacji: \
rogerdpack
9

RZECZYWISTE .. To zupełnie nowy umysł. W najnowszej wersji OS X (Mavericks) MOŻESZ wysyłać powiadomienia push ze strony internetowej na pulpit. Ale zgodnie z dokumentacją, NIE iPhone'y:

Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.

Obecnie Apple planuje zezwolić na 2 rodzaje powiadomień push: powiadomienia wypychane witryny OS X i powiadomienia lokalne.

Oczywistą przeszkodą jest to, że nie będzie to działać na komputerach PC, ani nie pozwoli na wysyłanie powiadomień push na Androida.

Co więcej, w przypadku wersji tak starych jak Snow Leapord możesz wysyłać powiadomienia push ze strony internetowej, o ile ta strona jest otwarta i aktywna. Nowy system operacyjny Mavericks zezwoli na powiadomienia push, nawet jeśli strona nie jest otwarta, zakładając, że już udzieliłeś tej witrynie pozwolenia na wysyłanie powiadomień push.

Z ust Apple:

W systemie OS X w wersji 10.9 i nowszych można wysyłać powiadomienia wypychane witryny OS X z serwera internetowego bezpośrednio do użytkowników systemu OS X za pomocą usługi Apple Push Notification (APN). Nie mylić z powiadomieniami lokalnymi, powiadomienia push mogą dotrzeć do użytkowników niezależnie od tego, czy Twoja witryna lub przeglądarka internetowa są otwarte…

Aby zintegrować powiadomienia push w swojej witrynie, najpierw przedstawiasz interfejs, który pozwala użytkownikowi wyrazić zgodę na otrzymywanie powiadomień. Jeśli użytkownik wyrazi zgodę, Safari kontaktuje się z Twoją witryną, prosząc o jej dane uwierzytelniające w postaci pliku zwanego pakietem push. Pakiet push zawiera również zasoby powiadomień używane w systemie OS X oraz dane używane do komunikacji ze skonfigurowaną usługą internetową. Jeśli pakiet wypychany jest ważny, otrzymasz unikatowy identyfikator użytkownika na urządzeniu, nazywany tokenem urządzenia. Użytkownik otrzyma powiadomienie, gdy wyślesz kombinację tego tokena urządzenia i swojej wiadomości lub ładunku do APN.

Po otrzymaniu powiadomienia użytkownik może je kliknąć, aby otworzyć wybraną przez siebie stronę internetową w domyślnej przeglądarce użytkownika.

Uwaga: jeśli potrzebujesz przypomnienia sobie o APN, przeczytaj rozdział „Usługa powiadomień Apple Push Notification” w Przewodniku programowania powiadomień lokalnych i push. Chociaż dokument dotyczy powiadomień push w systemach iOS i OS X, nadal obowiązują paradygmaty usługi powiadomień push.

Jonathan Nemeth
źródło
5
Miejmy nadzieję, że to oznacza, że ​​zobaczymy internetowe powiadomienia push z iOS 8 lub 9. Trzymam kciuki.
Travis,
5
Dokumentacja deweloperów wyraźnie mówi, że powiadomienia sieciowe nie dotyczą obecnie iOS. Tak jak wyjaśnienie twojego pierwszego akapitu.
Daniel Sellers,
1
Znając
Apple'a,
6

Nie, nie ma możliwości, aby aplikacja internetowa otrzymywała powiadomienia push. Co możesz zrobić, to zawinąć swoją aplikację internetową w natywną aplikację, która ma powiadomienia push.

JustSid
źródło
co masz na myśli, mówiąc „opakuj swoją aplikację internetową w aplikację natywną”?
Frankie,
1
Frankie: Cóż, tylko natywna aplikacja, która wyświetla UIWebView, która następnie ładuje Twoją witrynę. Dzięki temu możesz mieć aplikację internetową jako natywną aplikację na telefonie.
JustSid
więc myślę, że w xcode byłoby to „WindowBase Aplication” dla aplikacji natywnej, prawda?
Frankie,
teraz możesz na Maverix i Safari 7!
themihai
1
@DanDascalescu Dlaczego miałbym? Nadal nie jest to możliwe na iOS, o co chodziło w tym pytaniu. Odpowiedź nie jest nieprawidłowa.
JustSid,
2

W3C powołało w 2010 roku grupę roboczą do wdrażania powiadomień:
http://www.w3.org/2010/web-notifications/

Ta grupa robocza opracowuje interfejsy API, które udostępniają te mechanizmy aplikacjom internetowym - tak aby programiści sieci Web tworzący na przykład internetowe klienty poczty e-mail i komunikatory internetowe mogli ściślej zintegrować zachowanie swoich aplikacji internetowych z funkcjami powiadamiania systemów operacyjnych ich użytkowników końcowych.

W końcu wynik jest jak kiepski żart, ponieważ działa tylko wtedy, gdy dana witryna jest otwarta: http://alxgbsn.co.uk/notify.js/

Myślę, że nie zaimplementowali możliwości dodawania adresów URL typu push, aby przeglądarka mogła prosić o powiadomienia, gdy działa w tle - a przede wszystkim - jeśli wszystkie karty zostały zamknięte.

mgutt
źródło
2

Możesz użyć HTML5 Websockets do wprowadzenia własnych wiadomości push. Z Wikipedii :

„Po stronie klienta WebSocket miał zostać wdrożony w przeglądarkach Firefox 4, Google Chrome 4, Opera 11 i Safari 5, a także w mobilnej wersji Safari w iOS 4.2. Również przeglądarka BlackBerry w OS7 obsługuje WebSockets”.

Aby to zrobić, potrzebujesz własnego serwera dostawcy, który będzie wysyłał wiadomości do klientów.
Jeśli chcesz korzystać z APN (Apple Push Notification) lub C2DM (Cloud to Device Message), musisz mieć natywną aplikację, którą należy pobrać ze sklepu internetowego.

Foyzul Karim
źródło
6
cóż, działałoby to tylko wtedy, gdy przeglądarka jest otwarta i na stronie aplikacji internetowej. w przeciwieństwie do powiadomień push, które działają nawet wtedy, gdy aplikacja jest wyłączona.
Hagai L
2

Pushbullet jest do tego świetną alternatywą.

Jednak użytkownik musi mieć konto Pushbullet i zainstalowaną aplikację (iOS, Android) lub zainstalowaną wtyczkę (Chrome, Opera, Firefox i Windows).

Możesz skorzystać z API , tworząc aplikację Pushbullet i łącząc użytkownika aplikacji z użytkownikiem Pushbullet za pomocą oAuth2.

Korzystanie z biblioteki znacznie ułatwiłoby zadanie , w przypadku PHP mógłbym polecić ivkos / Pushbullet-for-PHP .

Tim
źródło
1

Sprawdź powiadomienia Xtify Web Push. http://getreactor.xtify.com/ To narzędzie umożliwia wypychanie treści na stronę internetową i kierowanie na odwiedzających, a także wyzwalanie wiadomości na podstawie zdarzeń DOM przeglądarki. Został zaprojektowany specjalnie z myślą o urządzeniach mobilnych.

Jeremy
źródło