How can a web application send push notifications to iOS devices?
我正在使用网络应用程序。 有新内容时,如何向iOS用户发送推送通知?
更具体地说,为了使Web应用程序将推送通知发送到移动设备(例如iPhone),该移动设备必须已注册才能接收特定应用程序的推送通知。推送通知的注册是通过本机应用程序完成的,只能通过本机应用程序执行。一旦注册了本机应用程序以进行推送通知,它便可以将授权令牌发送到服务器,该令牌可以与用于配置本机客户端的证书一起使用,以将推送通知发送到移动设备。
如另一个答案中所指定,一个选项是将Web应用程序"包装"在本机应用程序中。这意味着您将创建一个本机应用程序,该应用程序基本上向显示您的Web应用程序的用户呈现一个UIWebView(对于iPhone开发者)。尽管此功能与本机浏览器的功能大致相同,但您将能够使用本机控件添加注册推送通知的功能。
查看Apple的推送通知文档将对您很有帮助,因为它提供了有关iPhone上的推送消息功能功能的相当不错的信息。
请参阅Peter Hosey提供的以下链接:
- https://support.apple.com/kb/HT201925
- https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html
不可以,只有本机iOS应用程序支持推送通知。
更新:
Mac OS X 10.9和Safari 7网站现在也可以发送推送通知,但这仍然不适用于iOS。
阅读网站通知编程指南。另请参阅WWDC 2013 Session 614。
虽然iOS(自iOS 10起)尚不支持,但网站可以使用Push API将推送通知发送到Firefox和Chrome(桌面/ Android)。
推送API与较早的Web通知结合使用以显示消息。优点是,即使用户不浏览您的网站,Push API仍可以传递通知,因为它们是基于Service Workers(由浏览器注册的脚本,并且可以在以后的后台执行,即使在您的用户已离开您的网站)。
发送通知的过程涉及以下内容:
Chrome,Firefox和Opera目前在桌面和Android上支持Push API。
您还可以使用APN将推送通知发送到Apple / Safari桌面。这种方法是相似的,但是有很多复杂性(苹果开发者证书,推送包,与APN的低级TCP连接)。
如果您想自己实现推送通知,请从以下教程开始:
- 推送API:开放式网络上的推送通知
- 苹果推送通知系统:配置Safari推送通知
如果您正在寻找解决方案的下降,我建议您使用Pushpad,这是我构建的服务。
更新(2017年9月):Apple已开始开发WebKit(状态)的服务工作者。由于服务人员是Web推送的基本技术,因此这是一大进步。
Google Chrome现在支持W3C标准的推送通知。
http://www.w3.org/TR/push-api/
实际上,这是您的新想法。.在最新版本的OS X(Mavericks)上,您可以将推送通知从网页发送到桌面。但是根据文档,不是iPhone:
1 | Note: This document pertains to OS X only. Notifications for websites do not appear on iOS. |
目前,苹果公司计划允许两种推送通知:
OS X网站推送通知
和本地通知。
这里明显的障碍是,这将无法在PC上运行,也不允许您执行android push通知。
此外,实际上,您可以使用诸如Snow Leapord的旧版本,只要该网站处于打开状态且处于活动状态,就可以从该网站发送推送通知。新的Mavericks操作系统即使在站点未打开的情况下也将允许推送通知,前提是您已授予该站点发送推送通知的权限。
从苹果的嘴里:
在OS X v10.9和更高版本中,您可以使用Apple Push Notification Service(APN)将Web服务器上的OS X网站推送通知直接分发给OS X用户。不要与本地通知混淆,无论您的网站或他们的Web浏览器是否打开,推送通知都可以到达您的用户…
要将推送通知集成到您的网站中,您首先需要提供一个界面,该界面允许用户选择接收通知。如果用户同意,Safari会通过称为"推包"的文件形式与您的网站联系,以请求其凭据。推包还包含整个OS X使用的通知资产以及用于与您配置的Web服务进行通信的数据。如果推包有效,您将在设备上收到用户的唯一标识符,称为设备令牌。当您将此设备令牌和您的消息或有效负载的组合发送到APN时,用户会收到通知。
收到通知后,用户可以单击它,以在用户的??默认浏览器中打开您选择的网页。
注意:如果需要有关APN的更新,请阅读"本地和推送通知编程指南"中的" Apple Push Notification Service"一章。尽管该文档特定于iOS和OS X推送通知,但推送通知服务的范例仍然适用。
如果您不想创建自己的本机应用程序,则可以使用pushover:https://pushover.net/
不,Web应用程序无法接收推送通知。您可以做的是将您的Web应用程序包装到具有推送通知的本机应用程序中。
Pushbullet是一个很好的选择。
但是,用户需要具有Pushbullet帐户和已安装的应用程序(iOS,Android)或已安装的插件(Chrome,Opera,Firefox和Windows)。
您可以通过创建Pushbullet应用来使用API??,然后使用oAuth2将应用的用户连接到Pushbullet用户。
使用库会使它变得更加容易,对于PHP,我建议使用ivkos / Pushbullet-for-PHP。
W3C在2010年成立了一个工作组来实施通知:
http://www.w3.org/2010/web-notifications/
This Working Group develops APIs that expose those mechanisms to Web Applications—so that Web developers creating, for example, Web-based e-mail clients and instant-messaging clients can more closely integrate their Web application behavior with the notification features of the operating systems of their end users.
最后,结果就像是一个恶作剧,因为它仅在特定网站打开时才有效:
http://alxgbsn.co.uk/notify.js/
我认为他们错过了实现添加推送URL的可能性,因此浏览器能够在后台(尤其是所有标签页)关闭的情况下在后台运行时请求通知。
您可以使用HTML5 Websocket引入自己的推送消息。从维基百科:
"For the client side, WebSocket was to be implemented in Firefox 4,
Google Chrome 4, Opera 11, and Safari 5, as well as the mobile version
of Safari in iOS 4.2. Also the BlackBerry Browser in OS7 supports
WebSockets."
为此,您需要自己的提供程序服务器将消息推送到客户端。如果要使用APN(苹果推送通知)或C2DM(云到设备消息),则必须具有必须通过在线商店下载的本机应用程序。
查看Xtify Web Push通知。 http://getreactor.xtify.com/此工具允许您将内容推送到网页上并定位访问者,并基于浏览器DOM事件触发消息。它是专门为移动而设计的。