Web应用程序如何向iOS设备发送推送通知?

Fra*_*kie 116 iphone web-applications apple-push-notifications ios

我正在开发一个网络应用程序.如果有新内容,如何向iOS用户发送推送通知?

Kri*_*bic 90

更具体地,为了使web应用程序向诸如iPhone的移动设备发送推送通知,移动设备必须已经注册以接收针对特定应用程序的推送通知.推送通知的注册是通过本机应用程序完成的,只能通过本机应用程序执行.一旦本机应用程序注册了推送通知,它就可以将授权令牌发送到服务器,该服务器可以与用于配置本机客户端的证书一起使用,以将推送通知发送到移动设备.

正如另一个答案中所指出的,一个选项是将Web应用程序"包装"在本机应用程序中.这意味着您将创建一个本机应用程序,该应用程序基本上向显示您的Web应用程序的用户提供UIWebView(用于iPhone开发).虽然这几乎与本机浏览器的功能相同,但您可以添加使用本机控件注册推送通知的功能.

查看Apple的推送通知文档对您有所帮助,因为它提供了一些关于推送消息在iPhone上的功能的非常好的信息.

请参阅Peter Hosey提供的这些链接:

  • 这在2016年已不再适用,您可以从网络应用发送通知.请阅读下面的答案. (8认同)

Fel*_*lix 44

不,只有原生iOS应用程序支持推送通知.

更新:
Mac OS X 10.9和Safari 7网站现在也可以发送推送通知,但这仍然不适用于iOS.阅读网站通知编程指南.另请参阅WWDC 2013 Session 614.

  • OP问题专门针对iOS.OSX/macOS对此的支持很不错,但推送通知仍然只能在本机应用程序的iOS上运行. (3认同)

col*_*rco 39

虽然iOS上尚未支持(从iOS 10开始),但网站可以使用Push API向Firefox和Chrome(桌面/ Android)发送推送通知.

Push API与旧的Web Notifications结合使用以显示消息.优点是Push API允许即使在用户没有浏览您的网站时也会传递通知,因为它们是基于Service Workers构建的(脚本由浏览器注册,可以在以后执行,甚至在以后执行您的用户已离开您的网站).

发送通知的过程包括以下内容:

  1. 用户访问您的网站(必须通过HTTPS保护):您要求显示推送通知的权限并注册服务工作者(将在收到推送通知时执行的脚本)
  2. 如果用户已授予权限,则可以读取应发送到服务器并存储的设备令牌(端点)
  3. 现在您可以向用户发送通知:您的服务器向端点发出HTTP POST请求(这是包含设备令牌的URL).接收请求的服务器由浏览器制造商(例如Google,Mozilla)拥有:浏览器经常连接到它并且可以读取传入的通知.
  4. 当用户浏览器收到通知时,执行服务工作者,负责管理事件,从服务器检索通知数据并向用户显示通知

目前,Chrome,FirefoxOpera支持桌面和Android上的Push API .

您还可以使用APN 向Apple/Safari桌面发送推送通知.方法类似,但有许多复杂性(苹果开发人员证书,推送包,与APN的低级TCP连接).

如果您想自己实现推送通知,请从这些教程开始:

如果你正在寻找一个解决方案,我会建议Pushpad,这是我建立的服务.

更新(2017年9月):Apple已开始为WebKit(状态)开发服务工作者.由于服务人员是网络推送的基础技术,这是向前迈出的一大步.

  • Safari是新的Internet Explorer.Apple是新的微软.啊.... (11认同)
  • 从iOS 10(公共测试版)开始,Mobile Safari不支持推送通知. (3认同)
  • 让我们给苹果施加一些压力:我写了[一些段落](http://blog.pushpad.xyz/2017/06/lets-ask-apple-to-add-web-push-notifications-to-ios/)您可以复制并提交到 Apple Bug Tracker 以要求 Apple 将网络推送添加到 iOS。 (2认同)

Bon*_*uin 10

Google Chrome现在支持推送通知的W3C标准.

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


小智 9

ACTUALLY.这是全新的主意你..在最新版本的OS X(小牛),你CAN从网页到桌面发送推送通知.但根据文档,不是iPhone:

Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.
Run Code Online (Sandbox Code Playgroud)

目前,Apple计划允许两种推送通知:OS X网站推送通知和本地通知.

这里明显的障碍是这不会在PC上运行,也不会允许你做android推送通知.

此外,您实际上可以使用与Snow Leapord一样旧的版本,只要所述网站处于打开和活动状态,就可以从网站发送推送通知.即使网站没有打开,新的Mavericks操作系统也会允许推送通知,假设您已经允许该网站发送推送通知.

来自Apple的口:

在OS X v10.9及更高版本中,您可以使用Apple推送通知服务(APN)将OS X网站推送通知从Web服务器直接发送到OS X用户.不要与本地通知混淆,无论您的网站或其网络浏览器是否开放,推送通知都可以覆盖您的用户...

要在您的网站中集成推送通知,您首先要提供一个允许用户选择接收通知的界面.如果用户同意,Safari会以称为推送包的文件的形式联系您的网站,请求其凭据.推送包还包含OS X中使用的通知资产以及用于与您配置的Web服务进行通信的数据.如果推送包有效,则会在设备上收到用户的唯一标识符,称为设备令牌.当您将此设备令牌和您的消息或有效负载的组合发送到APN时,用户会收到通知.

收到通知后,用户可以单击它以在用户的​​默认浏览器中打开您选择的网页.

注意:如果您需要更新APN,请阅读"本地和推送通知编程指南"中的"Apple推送通知服务"一章.虽然该文档特定于iOS和OS X推送通知,但推送通知服务的范例仍然适用.

  • 希望这意味着我们将看到iOS 8或9的基于网络的推送通知.保持我的手指交叉. (5认同)
  • 开发人员文档明确表示,Web通知目前不适用于iOS.正如您对第一段的澄清一样. (5认同)

Sam*_*Sam 8

如果您不想创建自己的原生应用程序,可以使用pushover:https://pushover.net/


Jus*_*Sid 7

不,webapp无法接收推送通知.您可以做的是将您的webapp包装到具有推送通知的本机应用程序中.