it-swarm.asia

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

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

111
Frankie

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

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

查看Apple的Push通知文档对您有所帮助,因为它提供了有关Push消息在iPhone上如何运行的非常好的信息。

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

89
Kris Babic

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

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

44
Felix

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

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

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

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

推送API目前支持 桌面和Android by Chrome Firefox Opera

您还可以使用APN将推送通知发送到Apple/ Safari desktop。方法类似,但有许多复杂情况(Apple开发人员证书,Push包,与APN的低级TCP连接)。

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

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

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

39
collimarco

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

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

10
BonzaiThePenguin

实际上......这是全新的想法..在OS X(Mavericks)的最新版本中你 _可以_ 从网页向桌面发送推送通知。但根据文档,不是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)将OS X网站推送通知从Web服务器直接发送到OS X用户。不要与本地通知混淆,无论您的网站或其网络浏览器是否开放,推送通知都可以覆盖您的用户...

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

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

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

9
Jonathan Nemeth

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

8
Sam

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

7
JustSid

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

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

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

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

2
mgutt

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

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

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

2
Foyzul Karim

Pushbullet 是一个很好的选择。

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

您可以使用 _ api _ 创建Pushbullet应用程序,并使用oAuth2将应用程序的用户连接到Pushbullet用户。

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

2
Tim

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

1
Jeremy