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

时间:2011-02-08 23:26:46

标签: ios iphone web-applications apple-push-notifications

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

11 个答案:

答案 0 :(得分:89)

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

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

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

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

答案 1 :(得分:44)

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

更新:
Mac OS X 10.9& Safari 7网站现在也可以发送推送通知,但这仍然不适用于iOS。 阅读Notification Programming Guide for Websites。另请查看WWDC 2013 Session 614

答案 2 :(得分: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. 当用户浏览器收到通知时,执行服务工作者,负责管理事件,从服务器检索通知数据并向用户显示通知
  5. 桌面和Android 目前支持 Chrome Firefox Opera

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

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

    如果您正在寻找解决方案,我建议Pushpad,这是我建立的服务。

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

答案 3 :(得分:10)

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

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

答案 4 :(得分:9)

ACTUALLY ..这是全新的想法..在最新版本的OS X(Mavericks)中,您CAN会将推送通知从网页发送到桌面。但根据文档,不是iPhone:

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

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

这里显而易见的障碍是,它不适用于PC,也不允许你进行Android推送通知。

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

来自Apple的口:

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

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

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

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

答案 5 :(得分:8)

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

答案 6 :(得分:7)

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

答案 7 :(得分:2)

您可以使用HTML5 Websockets引入自己的推送消息。来自Wikipedia

  

“对于客户端,WebSocket将在Firefox 4中实现,   谷歌Chrome 4,Opera 11和Safari 5,以及移动版本   iOS 4.2中的Safari。此外,OS7中的BlackBerry Browser也支持   的WebSockets“。

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

答案 8 :(得分:2)

W3C于2010年启动了一个实施通知的工作组:
http://www.w3.org/2010/web-notifications/

  

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

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

我认为他们错过了实施添加推送网址的可能性,以便浏览器能够在后台运行时请求通知 - 最重要的是 - 如果所有标签都已关闭。

答案 9 :(得分:2)

Pushbullet是一个很好的选择。

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

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

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

答案 10 :(得分:1)

查看Xtify Web Push通知。 http://getreactor.xtify.com/此工具允许您将内容推送到网页并定位访问者,并根据浏览器DOM事件触发消息。它专为移动设计而设计。