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

我正在开发一个networking应用程序。 有新内容时,如何将推送通知发送给iOS用户?

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

正如在另一个答案中指定的,一个select是将您的Web应用程序“包装”在本机应用程序中。 这意味着你将创build一个本地应用程序,基本上呈现给您的Web应用程序的用户的UIWebView(iPhone开发)。 虽然这个function与原生浏览器相同,但是您可以使用本机控件添加注册推送通知的function。

因为它提供了一些关于如何在iPhone上推送消息function的很好的信息,那么查看苹果的推送通知文档将是有益的。

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

不,只有本机iOS应用程序支持推送通知。

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

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

Push API与旧版Web通知结合使用来显示消息。 优点是Push API允许即使在用户没有浏览你的网站时也能传递通知,因为它们build立在服务工作者(服务工作者(脚本),这些脚本是由浏览器注册的,甚至可以在后期执行你的用户已经离开你的网站)。

发送通知的过程涉及以下内容:

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

Chrome浏览器FirefoxOpera目前支持桌面和Android版本的Push API。

您还可以使用APN将推送通知发送到Apple / Safari桌面。 这种方法是相似的,但有许多复杂性(苹果开发者证书,推送包,与APN的低级TCP连接)。

如果您想自己实施推送通知,请从以下教程开始:

  • 在Open Web上推送API: 推送通知
  • Apple推送通知系统: configurationSafari推送通知

如果你正在寻找解决scheme,我会build议Pushpad ,这是我build立的服务。

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

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

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

ACTUALLY ..这是全新的心态..在最新版本的OS X(Mavericks)上,您可以将推送通知从网页发送到桌面。 但根据该文件,不iPhone:

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

目前,苹果计划允许2种推送通知:OS X网站推送通知和本地通知。

这里显而易见的障碍是,这不会在个人电脑上工作,也不会让你做android推送通知。

而且,实际上,您可以使用与Snow Leapord一样的版本,只要该网站是开放且活跃的,就可以从网站发送推送通知。 假设您已经授权所述网站发送推送通知,即使网站未打开,新的小牛操作系统也将允许推送通知。

从苹果的口中:

在OS X v10.9及更高版本中,您可以使用Apple推送通知服务(APN)将OS X网站推送通知直接从Web服务器派送到OS X用户。 不要混淆与本地通知,推送通知可以达到您的用户,无论您的网站或他们的网页浏览器是否打开…

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

收到通知后,用户可以点击它在用户的默认浏览器中打开您select的网页。

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

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

不,webapp无法接收推送通知。 你可以做的是把你的web应用程序包装到一个本地的应用程序,它有推送通知。

W3C于2010年开始实施通知工作组:
http://www.w3.org/2010/web-notifications/

该工作组开发了将这些机制公开给Web应用程序的API,以便创build例如基于Web的电子邮件客户端和即时消息客户端的Web开发人员可以更紧密地将他们的Web应用程序行为与操作系统的通知function的最终用户。

最后结果就像一个坏笑话,因为它只有在特定的网站是开放的时候才起作用: http : //alxgbsn.co.uk/notify.js/

我想他们错过了实现添加推送url的可能性,以便浏览器能够在后台运行时询问通知 – 最重要的是,如果所有标签都已closures。

您可以使用HTML5 Websockets来引入您自己的推送消息。 维基百科 :

“对于客户端来说,WebSocket将在Firefox 4,Google Chrome 4,Opera 11和Safari 5以及iOS 4.2中的Safari移动版本中实现,OS 7中的BlackBerry Browser也支持WebSocket。

为此,您需要您自己的提供商服务器将消息推送到客户端。
如果要使用APN(Apple推送通知)或C2DM(云到设备消息),则必须具有必须通过在线商店下载的本机应用程序。

Pushbullet是一个很好的select。

但是,用户需要安装一个Pushbullet帐户,并安装了应用程序(iOS,Android)或插件(Chrome,Opera,Firefox和Windows)。

您可以通过创build一个Pushbullet应用程序来使用API ,并使用oAuth2将您的应用程序的用户连接到Pushbullet用户。

使用库会使它更容易,对于PHP,我可以推荐ivkos / Pushbullet-for-PHP 。