Web 应用程序如何向 iOS 设备发送推送通知? [关闭]
Posted
技术标签:
【中文标题】Web 应用程序如何向 iOS 设备发送推送通知? [关闭]【英文标题】:How can a web application send push notifications to iOS devices? [closed] 【发布时间】:2011-06-23 19:21:08 【问题描述】:我正在开发一个网络应用程序。有新内容时如何向 ios 用户发送推送通知?
【问题讨论】:
现在有什么通知? @rfw:iOS 推送通知。 support.apple.com/kb/HT3576developer.apple.com/library/ios/documentation/… 您在搜索声音吗?然后,如果您想在手机锁定模式下发出声音通知;它的名字叫Specific Push。 【参考方案1】:更具体地说,为了让网络应用程序向移动设备(例如 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【讨论】:
感谢您的回答,我一直在寻找相同的答案。当您添加了元标记“apple-mobile-web-app-capable”时,这是否也适用? 这正在改变推送通知的发生方式developers.google.com/web/updates/2015/03/… 自 02/2016 起,FF、Chrome 和 Safari 可以注册从 webapp 推送。 这在 2016 年不再适用,您可以从 Web 应用程序发送通知。在下面阅读我的答案。 但是 webview 工作得不是很好,它缺少一些功能并且比 safari 有更多的错误【参考方案2】:虽然iOS 尚不支持(自 iOS 10 起),但网站可以使用 Push API 向 Firefox 和 Chrome(桌面/android)发送推送通知。
Push API 与旧的Web Notifications 结合使用来显示消息。优点是即使用户没有浏览您的网站,Push API 也允许发送通知,因为它们是基于 Service Worker(由浏览器注册的脚本,并且可以在稍后的时间在后台执行,即使在您的用户已离开您的网站)。
发送通知的过程涉及以下内容:
-
用户访问您的网站(必须通过 HTTPS 保护):您请求显示推送通知的权限并注册服务工作者(收到推送通知时将执行的脚本)
如果用户已授予权限,您可以读取设备令牌(端点),该令牌应发送到服务器并存储
现在您可以向用户发送通知:您的服务器向端点(这是一个包含设备令牌的 URL)发出 HTTP POST 请求。接收请求的服务器归浏览器制造商(例如 Google、Mozilla)所有:浏览器始终与其连接并可以读取传入的通知。
当用户浏览器收到通知时,会执行 service worker,它负责管理事件,从服务器检索通知数据并将通知显示给用户
Chrome、Firefox 和 Opera 目前在 桌面和 Android 上支持 Push API。 p>
您还可以使用 APN 将推送通知发送到 Apple / Safari 桌面。方法类似,但有许多复杂性(苹果开发者证书、推送包、到 APN 的低级 TCP 连接)。
如果您想自己实现推送通知,请从以下教程开始:
推送API:Push Notifications on the Open Web 苹果推送通知系统:Configuring Safari Push Notifications如果您正在寻找解决方案,我建议您使用Pushpad,这是我建立的一项服务。
更新(2017 年 9 月):Apple 已开始为 WebKit (status) 开发服务工作者。由于 Service Worker 是 Web 推送的基础技术,因此这是向前迈出的一大步。
【讨论】:
从 iOS 10(公测版)开始,Mobile Safari 不支持推送通知。 这不是对您的回答的更正,我正在为寻求 Safari Mobile 支持的人们提供信息。也许有一天他们会支持推送通知,但在我提到的版本中它们不支持。 Safari 是新的 Internet Explorer。苹果是新的微软。呃…… @Kevincore 不,很遗憾没有任何更新。 iOS 上的 Safari 目前不支持网络推送(2017 年 5 月)。 让我们给苹果一些压力:我写了some paragraphs,你可以复制并提交给Apple Bug Tracker,要求苹果在iOS中添加网络推送。【参考方案3】:不,只有原生 iOS 应用程序支持推送通知。
更新: Mac OS X 10.9 和 Safari 7 网站现在也可以发送推送通知,但这仍然不适用于 iOS。 阅读Notification Programming Guide for Websites。另请查看WWDC 2013 Session 614。
【讨论】:
现在您可以在 Maverix 和 Safari 7 上使用了! fastcolabs.com/3011072/tracking/… Safari 7 确实可以接收这些推送通知,并且根据您的 Web 应用程序运行的后端,有一些服务允许这样做:pushwoosh.com、pushmonkey.launchrock.com 或者您可以部署自己的服务器,这与 iOS 推送通知非常相似。 听说这叫具体推送。 OP 问题专门针对 iOS。 OSX/macOS 对此的支持很好,但推送通知仍然只能在 iOS 上通过本机应用程序运行。【参考方案4】:如果您不想创建自己的原生应用,可以使用 pushover:https://pushover.net/
【讨论】:
【参考方案5】:Google Chrome 现在支持推送通知的 W3C 标准。
http://www.w3.org/TR/push-api/
【讨论】:
这里有一个详尽的教程:developers.google.com/web/updates/2015/03/… 这是否包括适用于 iOS 的 Chrome? (最初的问题是针对 iOS 的) 目前还没有任何 iOS。必须使用本机应用程序:\【参考方案6】:实际上.. 这是全新的提醒您.. 在最新版本的 OS X (Mavericks) 上,您 CAN 将推送通知从网页发送到桌面。但根据文档,不是 iPhone:
Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.
目前 Apple 计划允许 2 种推送通知: OS X 网站推送通知 和本地通知。
这里的明显障碍是这在 PC 上不起作用,也不允许您进行 android 推送通知。
此外,您实际上可以使用与 Snow Leapord 一样旧的版本,从网站发送推送通知,只要该网站处于打开状态且处于活动状态。新的 Mavericks OS 将允许推送通知,即使该站点未打开,前提是您已授予该站点发送推送通知的权限。
来自苹果之口:
在 OS X v10.9 及更高版本中,您可以使用 Apple 推送通知服务 (APN) 从 Web 服务器直接向 OS X 用户发送 OS X 网站推送通知。不要与本地通知混淆,无论您的网站或其网络浏览器是否打开,推送通知都可以发送给您的用户……
要在您的网站中集成推送通知,您首先需要提供一个界面,允许用户选择接收通知。如果用户同意,Safari 会联系您的网站,以称为推送包的文件的形式请求其凭据。推送包还包含在整个 OS X 中使用的通知资产和用于与您配置的 Web 服务通信的数据。如果推送包有效,您会在设备上收到用户的唯一标识符,称为设备令牌。当您将此设备令牌和您的消息或有效负载的组合发送到 APN 时,用户会收到通知。
收到通知后,用户可以点击它在用户的默认浏览器中打开您选择的网页。
注意:如果您需要复习 APN,请阅读本地和推送通知编程指南中的“Apple 推送通知服务”一章。尽管该文档特定于 iOS 和 OS X 推送通知,但推送通知服务的范例仍然适用。
【讨论】:
希望这意味着我们将看到 iOS 8 或 9 的基于 Web 的推送通知。请保持我的手指交叉。 开发者文档明确表示网络通知目前不适用于 iOS。就像对您的第一段的澄清一样。 知道苹果他们会在一个版本的 iOS 中允许它并在下一个版本中删除它【参考方案7】:不,Web 应用程序无法接收推送通知。您可以做的是将您的 web 应用程序包装到具有推送通知的本机应用程序中。
【讨论】:
当你说“将你的 webapp 包装到原生应用中”是什么意思? Frankie:嗯,只是一个显示 UIWebView 的本机应用程序,然后它会加载您的网站。这使您可以将 Web 应用程序作为手机上的本机应用程序。 所以我猜在 xcode 中这将是本机应用程序的“WindowBase 应用程序”,对吧? 现在您可以在 Maverix 和 Safari 7 上使用了! @DanDascalescu 我为什么要这样做?在 iOS 上仍然不可能,这就是问题所在。答案没有错。【参考方案8】:W3C 于 2010 年成立了一个工作组来实施通知:http://www.w3.org/2010/web-notifications/
该工作组开发的 API 将这些机制公开给 Web 应用程序,以便创建例如基于 Web 的电子邮件客户端和即时消息客户端的 Web 开发人员可以更紧密地集成他们的 Web 应用程序行为与通知功能最终用户的操作系统。
最后结果就像一个坏笑话,因为它只有在特定网站打开时才有效: http://alxgbsn.co.uk/notify.js/
我认为他们错过了实现添加推送 url 的可能性,以便浏览器能够在后台运行时请求通知 - 最重要的是 - 如果所有选项卡都已关闭。
【讨论】:
【参考方案9】:您可以使用 HTML5 Websockets 来引入您自己的推送消息。来自Wikipedia:
"对于客户端,WebSocket 将在 Firefox 4 中实现, Google Chrome 4、Opera 11 和 Safari 5,以及移动版 iOS 4.2 中的 Safari。 OS7 中的黑莓浏览器也支持 WebSockets。”
为此,您需要自己的提供商服务器将消息推送到客户端。 如果您想使用 APN(Apple 推送通知)或 C2DM(云到设备消息),您必须有一个必须通过在线商店下载的本机应用程序。
【讨论】:
好吧,它只有在浏览器打开并且在 webapp 页面中才有效。与推送通知不同,推送通知即使在应用程序关闭时也能正常工作。【参考方案10】:Pushbullet 是一个很好的选择。
但是,用户需要拥有 Pushbullet 帐户并安装应用程序(iOS、Android)或插件(Chrome、Opera、Firefox 和 Windows)。
您可以通过创建 Pushbullet 应用程序来使用 API,并使用 oAuth2 将应用程序的用户连接到 Pushbullet 用户。
使用库会更容易,对于 php,我可以推荐 ivkos/Pushbullet-for-PHP。
【讨论】:
【参考方案11】:查看 Xtify Web 推送通知。 http://getreactor.xtify.com/ 此工具允许您将内容推送到网页上并定位访问者以及基于浏览器 DOM 事件触发消息。它专为移动设备而设计。
【讨论】:
以上是关于Web 应用程序如何向 iOS 设备发送推送通知? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在基于 Java 的应用服务器上使用 GCM 向 iOS 设备发送推送通知