Как веб-приложение может отправлять push-уведомления на устройства iOS? [закрыто]

121

Я работаю над веб-приложением. Как я могу отправлять push-уведомления пользователям iOS, когда появляется новый контент?

Фрэнки
источник
А какое уведомление сейчас?
4
@rfw: push-уведомления iOS. support.apple.com/kb/HT3576 developer.apple.com/library/ios/documentation/…
Питер Хози,
Вы ищете со звуком? Затем, если вы хотите звуковое уведомление в заблокированном режиме мобильного телефона; его название - Specific Push.
mrbengi 01

Ответы:

93

Чтобы быть более конкретным, для того, чтобы веб-приложение отправляло push-уведомления на мобильное устройство, такое как iPhone, мобильное устройство должно быть зарегистрировано для получения push-уведомлений для определенного приложения. Регистрация для push-уведомлений выполняется через собственное приложение и может быть выполнена только через собственное приложение. После того как собственное приложение зарегистрировано для push-уведомлений, оно может отправить на сервер токен авторизации, который можно использовать вместе с сертификатом, используемым для подготовки собственного клиента, для отправки push-уведомлений на мобильное устройство.

Как указано в другом ответе, один из вариантов - «обернуть» ваше веб-приложение в собственное приложение. Это означает, что вы должны создать собственное приложение, которое в основном представляет UIWebView (для iPhone dev) пользователю, показывающему ваше веб-приложение. Хотя это в значительной степени работает так же, как и собственный браузер, вы можете добавить возможность регистрации для push-уведомлений с помощью собственных элементов управления.

Вам было бы полезно ознакомиться с документом Apple о push-уведомлениях, поскольку он предоставляет довольно хорошую информацию о том, как работают push-сообщения на iPhone.

См. Ссылки, предоставленные Питером Хози:

Крис Бабич
источник
Спасибо за такой ответ, искал то же самое. Применимо ли это также, когда вы добавили метатег «apple-mobile-web-app-capacity»?
Марк Кнол
1
Это меняет способ получения push-уведомлений developers.google.com/web/updates/2015/03/…
Daniel Luca CleanUnicorn
1
с 02/2016 FF, Chrome и Safari могут зарегистрироваться для push-уведомлений из веб-приложения.
Ивон Хюин
9
В 2016 году это уже не так, вы можете отправлять уведомления из веб-приложений. Прочтите мой ответ ниже.
collimarco
Но веб-просмотр не работает отлично, в нем отсутствуют некоторые функции и больше ошибок, чем в сафари
Black
46

Нет, только собственные приложения iOS поддерживают push-уведомления.

ОБНОВЛЕНИЕ:
веб-сайты Mac OS X 10.9 и Safari 7 теперь также могут отправлять push-уведомления, но это все еще не относится к iOS. Прочтите Руководство по программированию уведомлений для веб-сайтов . Также ознакомьтесь с сеансом 614 WWDC 2013 .

Феликс
источник
1
теперь это возможно на Maverix и Safari 7!
themihai
Safari 7 наверняка может получать эти push-уведомления, и в зависимости от того, на какой серверной части запущено ваше веб-приложение, есть несколько служб, которые позволяют это: pushwoosh.com , pushmonkey.launchrock.com или вы можете развернуть свой собственный сервер, который очень похож на Push-уведомления iOS.
Tudor
Я слышал, что это называется «Особый толчок».
mrbengi
3
Вопрос ОП конкретно касается iOS. Поддержка OSX / macOS для этого приятна, но push-уведомления по-прежнему работают только на iOS из собственного приложения.
squarecandy
44

Хотя веб-сайты еще не поддерживаются в iOS (начиная с iOS 10), они могут отправлять push-уведомления в Firefox и Chrome (настольный компьютер / Android) с помощью Push API .

Push API используется вместе со старыми веб-уведомлениями. для отображения сообщения. Преимущество состоит в том, что Push API позволяет доставлять уведомление, даже если пользователь не просматривает ваш веб-сайт, поскольку они построены на Service Workers (скрипты, которые регистрируются браузером и могут выполняться в фоновом режиме позже, даже после ваш пользователь покинул ваш сайт).

Процесс отправки уведомления включает в себя следующее:

  1. пользователь посещает ваш веб-сайт (должен быть защищен через HTTPS): вы запрашиваете разрешение на отображение push-уведомлений и регистрируете сервис-воркера (сценарий, который будет выполняться при получении push-уведомления)
  2. если пользователь предоставил разрешение, вы можете прочитать токен устройства (конечную точку), который должен быть отправлен на сервер и сохранен
  3. теперь вы можете отправлять уведомления пользователю: ваш сервер отправляет HTTP-запрос POST в конечную точку (которая представляет собой URL-адрес, содержащий токен устройства). Сервер, который получает запрос, принадлежит производителю браузера (например, Google, Mozilla): браузер постоянно подключен к нему и может читать входящие уведомления.
  4. когда браузер пользователя получает уведомление, выполняет сервис-воркер, который отвечает за управление событием, получение данных уведомления с сервера и отображение уведомления для пользователя.

Push API в настоящее время поддерживается на ПК и Android в Chrome , Firefox и Opera .

Вы также можете отправлять push-уведомления на рабочий стол Apple / Safari с помощью APN. Подход аналогичен, но со многими сложностями (сертификаты разработчика Apple, push-пакеты, низкоуровневое TCP-соединение с APN).

Если вы хотите самостоятельно реализовать push-уведомления, начните с этих руководств:

Если вы ищете простое решение, я бы предложил Pushpad , сервис , который я создал.

Обновление (сентябрь 2017 г.): Apple начала разработку сервис-воркеров для WebKit ( статус ). Поскольку сервис-воркеры являются фундаментальной технологией для веб-push, это большой шаг вперед.

collimarco
источник
3
Начиная с iOS 10 (общедоступная бета), Mobile Safari не поддерживает push-уведомления.
Робин Догерти,
1
Это не было исправлением вашего ответа, я предоставлял информацию для людей, которым нужна поддержка Safari Mobile. Возможно, когда-нибудь они будут поддерживать push-уведомления, но этого не происходит в упомянутом мной релизе.
Робин Догерти
15
Safari - это новый Internet Explorer. Apple - это новый Microsoft. Ух ....
Коста
1
@Kevincore Нет, к сожалению, обновлений нет. Safari для iOS в настоящее время не поддерживает веб-push (май 2017 г.).
collimarco
1
Давайте окажем давление на Apple: я написал несколько абзацев, которые вы можете скопировать и отправить в Apple Bug Tracker, чтобы попросить Apple добавить веб-push в iOS.
collimarco 09
10

Google Chrome теперь поддерживает стандарт W3C для push-уведомлений.

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

BonzaiThePenguin
источник
Вот подробное руководство: developers.google.com/web/updates/2015/03/…
ayke
1
Включает ли это Chrome для iOS? (Изначальный вопрос
Саймон Ист,
На данный момент нет iOS ни на чем.
Необходимо
9

Вы можете использовать pushover, если не хотите создавать собственное приложение: https://pushover.net/

Сэм
источник
9

НА САМОМ ДЕЛЕ ... Это совершенно новый вид ... В последней версии OS X (Mavericks) вы МОЖЕТЕ отправлять push-уведомления с веб-страницы на рабочий стол. Но по документации НЕ айфоны:

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

В настоящее время Apple планирует разрешить 2 вида push-уведомлений: push-уведомления веб-сайта OS X и локальные уведомления.

Очевидным препятствием здесь является то, что это не будет работать на ПК и не позволит вам отправлять push-уведомления Android.

Кроме того, вы действительно можете с такими старыми версиями, как Snow Leapord, отправлять push-уведомления с веб-сайта, пока указанный веб-сайт открыт и активен. Новая ОС Mavericks будет разрешать push-уведомления, даже если сайт не открыт, при условии, что вы уже дали разрешение указанному сайту на отправку push-уведомлений.

Из уст Apple:

В OS X v10.9 и более поздних версиях вы можете отправлять push-уведомления веб-сайта OS X со своего веб-сервера напрямую пользователям OS X с помощью службы Apple Push Notification (APN). Не путайте с локальными уведомлениями, push-уведомления могут доходить до ваших пользователей независимо от того, открыт ли ваш веб-сайт или их веб-браузер ...

Чтобы интегрировать push-уведомления на свой веб-сайт, вы сначала представляете интерфейс, который позволяет пользователю выбрать получение уведомлений. Если пользователь соглашается, Safari связывается с вашим веб-сайтом и запрашивает его учетные данные в виде файла, который называется push-пакетом. Пакет push также содержит ресурсы уведомлений, используемые в OS X, и данные, используемые для связи с настраиваемой вами веб-службой. Если push-пакет действителен, вы получаете уникальный идентификатор пользователя на устройстве, известный как токен устройства. Пользователь получает уведомление, когда вы отправляете комбинацию этого токена устройства и вашего сообщения или полезной нагрузки в APN.

Получив уведомление, пользователь может щелкнуть по нему, чтобы открыть веб-страницу по вашему выбору в браузере пользователя по умолчанию.

Примечание. Если вам нужно узнать больше об APN, прочтите главу «Служба push-уведомлений Apple» в Руководстве по программированию локальных и push-уведомлений. Хотя документ относится к push-уведомлениям iOS и OS X, парадигмы службы push-уведомлений по-прежнему применяются.

Джонатан Немет
источник
5
Надеюсь, это означает, что мы увидим push-уведомления через Интернет в iOS 8 или 9. Держу пальцы скрещенными.
Трэвис
5
В документации разработчика прямо говорится, что веб-уведомления в настоящее время не применяются к iOS. Просто как разъяснение вашего первого абзаца.
Дэниел Селлерс
1
Зная Apple, они разрешат это для одной версии iOS и удалят для следующей
Александр Дерк
6

Нет, веб-приложение не может получать push-уведомления. Что вы могли бы сделать, так это обернуть свое веб-приложение в собственное приложение с push-уведомлениями.

JustSid
источник
что вы имеете в виду, когда говорите «превратить ваше веб-приложение в нативное»?
Фрэнки
1
Фрэнки: Ну, просто собственное приложение, которое отображает UIWebView, который затем загружает ваш сайт. Это позволяет использовать ваше веб-приложение в качестве собственного приложения на телефоне.
JustSid
так что я предполагаю, что в xcode это будет «WindowBase Aplication» для собственного приложения, верно?
Фрэнки
теперь это возможно на Maverix и Safari 7!
themihai
1
@DanDascalescu Зачем мне? Это все еще не возможно на IOS, которая является то , что речь шла о. Ответ не неправильный.
JustSid
2

W3C создал в 2010 году рабочую группу по внедрению уведомлений:
http://www.w3.org/2010/web-notifications/

Эта рабочая группа разрабатывает API-интерфейсы, которые открывают эти механизмы для веб-приложений, чтобы веб-разработчики, создающие, например, веб-клиенты электронной почты и клиенты обмена мгновенными сообщениями, могли более тесно интегрировать поведение своего веб-приложения с функциями уведомлений операционных систем. их конечных пользователей.

Наконец, результат похож на плохую шутку, поскольку он работает, только если конкретный веб-сайт открыт: http://alxgbsn.co.uk/notify.js/

Я думаю, они упустили возможность добавления push-адресов, чтобы браузер мог запрашивать уведомления во время работы в фоновом режиме - и, прежде всего, - если все вкладки были закрыты.

mgutt
источник
2

Вы можете использовать HTML5 Websockets для создания собственных push-сообщений. Из Википедии :

«На стороне клиента WebSocket должен был быть реализован в Firefox 4, Google Chrome 4, Opera 11 и Safari 5, а также в мобильной версии Safari в iOS 4.2. Также браузер BlackBerry в OS7 поддерживает WebSockets».

Для этого вам понадобится собственный сервер провайдера, чтобы отправлять сообщения клиентам.
Если вы хотите использовать APN (Apple Push Notification) или C2DM (Сообщение из облака на устройство), у вас должно быть собственное приложение, которое необходимо загрузить через интернет-магазин.

Фойзул Карим
источник
6
ну, это будет работать, только если браузер открыт и находится на странице веб-приложения. в отличие от push-уведомлений, которые работают даже при отключенном приложении.
Hagai L
2

Pushbullet - отличная альтернатива для этого.

Однако пользователю необходимо иметь учетную запись Pushbullet и установленное приложение (iOS, Android) или плагин (Chrome, Opera, Firefox и Windows).

Вы можете использовать API , создав приложение Pushbullet и связав пользователя вашего приложения с пользователем Pushbullet с помощью oAuth2.

Использование библиотеки сделало бы это намного проще, для PHP я мог бы порекомендовать ivkos / Pushbullet-for-PHP .

Тим
источник
1

Ознакомьтесь с уведомлениями Xtify Web Push. http://getreactor.xtify.com/ Этот инструмент позволяет размещать контент на веб-странице и направлять посетителей, а также запускать сообщения на основе событий DOM браузера. Он разработан специально для мобильных устройств.

Джереми
источник