对于我们这些一直在等待的人来说,主要是为了让我们的 Discourse 实例在 iOS 上运行得更好,这一天似乎近在眼前了,因为苹果今天正式宣布在 2023 年推出的 iOS 16 中支持 Web 推送通知。
明天有一个关于此的演示文稿:
这里有更多关于实现的细节。
https://webkit.org/blog/12824/news-from-wwdc-webkit-features-in-safari-16-beta/
Web Push 即将登陆 macOS Ventura 上的 Safari 16。这使您可以远程向您的网站和 Web 应用的用户发送通知,即使在 Safari 未运行时也能传递这些通知。它使用了您可能从其他浏览器熟悉的相同 Web 标准组合:Push API 和 Notifications API,以及 Service Worker。
用户通过用户手势(例如单击按钮)表示兴趣后,即可选择接收通知。然后,系统会提示他们授予您的网站或应用发送通知的权限。用户将能够通过通知中心查看和管理通知,并在通知设置中为每个网站自定义样式和关闭通知。
如果您已经使用行业最佳实践为您的 Web 应用或网站实现了 Web Push,它将在 Safari 中自动运行。但是,如果您通过浏览器检测排除了 Safari,则需要切换到功能检测才能使其正常工作。
Safari 中的 Web Push 使用与为所有 Mac 和 iOS 设备上的原生推送提供支持的 Apple Push Notification 服务相同的服务。如果您在服务器上严格管理推送端点,请确保允许来自 push.apple.com 任何子域的 URL。您无需成为 Apple Developer Program 会员。
并期待 2023 年的 iOS 和 iPadOS Web Push。
macOS Safari 自 2013 年以来一直支持非标准的 Web 推送通知,但之前从未在 iOS 上运行过。
此公告似乎仅表明 macOS Safari 将在 Safari 16 中切换到基于标准的 API,这很好,但如果您想要 macOS Safari 推送通知,您今天就可以实现它们。
iOS 支持将是真正的改变者。
我感谢您提供更详细的信息!
您或其他人知道这会对 Discourse 实例产生什么影响吗?我假设这意味着当有人将网站保存到主屏幕时,它将允许用户接收来自该 Discourse PWA 的通知,这是真的吗?
此外,这是否允许 DiscourseHub 向其中的所有 Discourse 实例发送 iOS 推送通知?
不,此功能与安装到主屏幕或“PWA”无关。
“PWA”是 Google 开发者发明的一个营销术语;该术语指的是一系列功能:
- 添加到主屏幕 (A2HS)
- 离线支持,以便在您离线时网站/应用仍可运行
- 原生应用般的功能(以前仅限于原生应用的功能),包括推送、蓝牙、后台获取等。
但这些功能之间本身并没有必然联系。您可以拥有其中任何一项功能,而无需其他功能。
- 您可以将任何网页添加到主屏幕。网页不必具有离线支持或原生应用般的功能即可 A2HS。(它实际上只是将书签添加到您的主屏幕;A2HS 仅此而已。)
- 无论您是否使用 A2HS,都可以为您的网站启用离线支持。
- 没有需要您使用 A2HS 或使用离线支持的原生应用般的功能。只要用户接受“权限”对话框,WebBluetooth 就可以在任何网页上运行;您不必 A2HS 即可启用它。
今天,在 Google Chrome 和当前发布的 macOS Safari 15 版本中,网站可以弹出一个小的请求对话框,询问推送通知的权限。(您必须在“点击”处理程序或类似的“用户手势”(如拖动或滑动)的响应中执行此操作。)您可能偶尔会在新闻网站上看到这些弹出窗口。
Apple 的博文似乎表明 Safari 16 中的权限提示不会有任何改变:
用户首先通过用户手势(例如单击按钮)表示兴趣来选择接收通知。然后,系统将提示他们授予您的网站或应用发送通知的权限。
这个问题令人困惑。这正是 Discourse Hub 今天所做的。
我想可能是我的 iPhone 通知设置有问题,导致通知没有送达:
啊,太好了!这样人们就可以在没有 A2HS 的情况下收到通知了,听起来很棒,谢谢。
我的印象是,Discourse Hub 中的 iOS 通知仅适用于 Discourse 团队托管的 Discourse 实例,如以下消息所示。这种情况改变了吗?
正如您链接的帖子所解释的,Discourse Hub 可以为任何 Discourse 站点推送通知,即使不是由 Discourse 团队托管的站点,但它仅为 Discourse 团队托管的站点推送_实时_(即时)通知。如果您将非托管站点添加到 Discourse Hub,您将收到通知,但通知的频率会较慢。
尽管如此,我认为这并不是问题所要问的,但也许我误解了:
Discourse Hub 已经可以发送 iOS 推送通知 来自 其内部的所有 Discourse 实例。非托管站点发送通知的速度较慢,但它们确实会发送通知。
啊,我确实希望自托管站点能够发送即时通知。也许通知延迟让我对它们当前是否正在发送感到困惑。
话虽如此,我很高兴 iOS 16 应该能够为自托管 Discourse 站点启用即时通知 ![]()
感谢您的澄清。我主要对实时 iOS 推送通知感兴趣,而不是通过轮询获取的通知。
“WKWebView”是 Apple 在原生应用中嵌入网页浏览器的 API;Discourse Hub 使用 WKWebView。据我所知,今天现有的专有 macOS Safari 15 推送通知在 macOS 的 WKWebView 中不起作用。
Apple 提供的一些原生功能 仅 在 Safari 应用中可用,而在 WKWebView 中不可用,有时甚至在保存到主屏幕的网页中也不可用,这些网页在技术上都在 iOS 上运行一个单独的“Web.app”进程。
我们还不知道新的标准推送 API 是否能在 WKWebView 中工作(因此我们不知道它是否能在 Discourse Hub 中工作),我们当然也不知道推送 API 是否能在 iOS 的 WKWebView 中工作,而 iOS 在 2022 年甚至还没有发货。
但是,明天的演示应该会提供更多细节。
供参考,Apple 的布道者通常会拒绝公开回答有关 Web 上类似原生功能的其他问题。
请看在 Twitter 上提出的这个问题:
Apple 一直在回答 Maximiliano 一天中的问题,但是,呃,出于 某些 原因,只有 这个问题 没有得到回答!![]()
哦,天哪,我喜欢这种细节程度,感谢您写出来。希望它能在 iOS 的 WKWebView 和主屏幕应用上运行 ![]()
很高兴看到我不是唯一一个关注那个主题演讲的人。![]()
我不确定为什么它不会在 iOS 16 的第一个版本中发布,但不管怎样……
macOS 难道不是已经支持了吗?我好几年前就能收到来自 MacRumors 的 Safari 推送通知了。也许他们当时用的是某种变通方法?![]()
正如我在之前的帖子中所说:
啊,抱歉。我不太确定你的意思。![]()
今天的视频细节非常少。Meet Web Push for Safari - WWDC22 - Videos - Apple Developer
WebKit 今天发布了一篇博文。
这里有更多细节。
在 Safari WWDC 休息室,一位名叫“John”的用户问了一个问题:“Web 推送在 WKWebView 实例中有效吗?”来自苹果的“Brady E”回答说:
在 macOS Ventura 上,Web 推送仅在 Safari 16 中受支持。
John 接着问:“iOS/iPadOS 呢?”Brady 回答说:“请关注 2023 年的 iOS/iPadOS 支持。”所以,他们今天不回答任何关于 iOS 支持的问题。
我认为 Web 推送通知在 2023 年的 WKWebView 中极不可能有效,尤其是在 iOS 上,所以我预计 Safari Web 推送将不会直接使 Discourse Hub 受益。
但是,当然,当 Safari Web 推送推出时,Discourse Hub 应用程序的重要性将大大降低。
感谢您关注苹果公司,并在此撰写后续报道🙏🏻
Discourse Hub 应用还有一些其他的好处。
不过你说的基本正确。它很快就会部分过时。我想知道 CDCK 是否会完全放弃它…… ![]()

顺便说一句,我们没有计划放弃移动应用程序,它仍然非常有用,可以让你在一个地方聚合你所有的 discourse 站点和通知,并且可以独立于接收实时通知。
将 Discourse Hub 作为 PWA 引入 Web 是否有意义?
这不幸的是目前不在我们的路线图上,但我个人很希望看到它,这是一个很棒的主意 ![]()
