从PWA向iOS发送推送通知

82

我有一个使用Blazor WebAssembly制作的渐进式网络应用程序,我想知道是否可以向iOS设备发送推送通知?尽管有人说它现在可以在MacOS上的Safari上工作,但Push API网站表示它不支持iOS上的Safari。

  • 如果我要针对iOS目标,需要包装每个Web应用程序吗?我没有MacBook,我需要购买一个才能实现这一点吗?

  • 另外还有Firebase和Azure通知中心,我不能使用它们的服务来为iOS发送通知吗?Firebase只提供Objective-C和Swift示例。

  • 这也引出了另一个问题:通知的传输方式是否取决于平台?我对云服务在其中的角色感到困惑。


5
不可以,苹果不允许在iOS上使用推送通知。你需要改用短信。 - Chris Love
1
这个回答解决了你的问题吗?如何向iOS WebApp(PWA)发送推送通知? - abraham
1
@abraham 我在发布我的问题之前看到过这个问题。不幸的是,没有。我现在正在研究将我的WebAssembly应用程序部署为移动应用程序,而不是PWA。 - Kaan Taze
2
我们的应用被苹果拒绝了。在2021年,这仍然无法与最新的iOS版本兼容,这太疯狂了。 - Daniel Ehrhardt
2
iOS 15.4 暗示着 AR/VR 头戴式设备支持和推送通知即将到来的 Web 应用程序。https://9to5mac.com/2022/01/31/ios-15-4-hints-at-ar-vr-headset-support-and-push-notifications-coming-to-web-apps/ - pdorgambide
显示剩余2条评论
6个回答

157

在iOS上使渐进式Web应用程序(PWA)实现推送通知只有三个主要选项。在两种情况下,都必须在苹果开发者门户网站上注册一个App ID,并获得相应服务的权限。对于选项1,您注册的App ID必须具有对Apple钱包的权限。对于选项2和3,您必须获得推送通知的权限。在两种情况下,您应该记录您的Bundle ID和Team ID,以防将来需要。

  • 选项1(更简单):使用PassKit设置通用的Apple Wallet Pass,它可以代理非常类似于本机通知的通知。这里是 一些 文档, 这是一个工作演示,展示了如何向已注册设备发送推送通知。

  • 选项2(更难):使用Firebase Cloud Messaging或类似Node-APN的软件包以“正确”的方式发送推送通知,使用来自Apple Developer Portal的P12或P8密钥进行签名。这变得棘手主要是因为你需要iOS设备标识符,该标识符仅暴露给本地安装的应用程序。恐怕我无法回答如何从PWA内部获取此设备ID,没有它,此方法无法工作。

  • 选项3(不是PWA):您可以使用带有配置文件和P12或P8密钥的应用程序ID,类似于上一个选项,但您需要在Apache Cordova中包装您的应用程序,并分发它(通过公共应用商店或使用MDM软件和通过私人Apple Business Manager)。

这些是您的选择。我已经研究了所有可能的途径,我确信在接下来的几个月里,这些仍将是您唯一的选择。未来可能会出现更多关于Web Push的支持或者只是从Web获取设备ID的方法,但在那之前,这就是全部。目前没有其他方法可行。

26
谢谢Kyle!我现在正在与苹果WebKit的负责人Maciej Stachowiak交谈,看看他们是否可以公开设备ID以使选项2更具可行性。目前还没有保证,但希望我们可以在2021年看到这个选项有所进展! - Crates
1
请问选项2有任何更新吗?另外,如果用户使用Safari浏览器(意味着在Chrome上工作),iOS上的推送通知是否无法工作,还是无论使用哪个浏览器,它们都无法在iOS(iPhone)上工作? - Ayudh
1
据我所知(2020年搭载IOS 14的iPhone SE),它们在IOS上的任何浏览器上都无法工作,因此问题出在手机上而非浏览器。 - Barbaldo
5
他们确实适用于渐进式Web应用程序(PWA),但是它们非常麻烦。我们让它们在我目前的雇主正在使用的一个应用程序中运作。需要跳过好几个环节,用户需要指示如何将PassKit通行证添加到他们的钱包中。鉴于其不可靠和通知不一致的程度以及麻烦程度,我并不特别推荐它。如果我是你,我会考虑使用Capacitor或Cordova来包装应用程序。 - Crates
4
这个问题的答案是什么?#1 是一个骗局,需要用户付出比只是将 PWA 安装到主屏幕上更多的努力,而 #2 和 #3 根本不涉及 PWA,只适用于原生应用程序。 - ruohola
显示剩余3条评论

34
我想告诉大家一个好消息:苹果将支持Web应用程序的推送通知!这个新闻是在WWDC2022上发布的。苹果将在几个月后(2022年)通过Safari 16在macOS(Ventura)中发布Web Push,并计划在2023年为iOS和iPadOS发布。

参见:https://webkit.org/blog/12945/meet-web-push/


3
这是真的,并且可能与我与苹果的WebKit团队讨论添加此功能有关。我很高兴看到他们正在加入这个功能。这对于PWA来说是一个巨大的进步! - Crates
在这个还没有解决之前,我会使用这个Flutter包装器:https://medium.com/@bettysteger/how-to-integrate-native-push-notifications-into-your-pwa-cdf07454ff06 - Betty St
1
@RuhrpottDev 这个更新会影响老款iOS设备的用户还是只有新设备? - Luca Pennisi

6
推送通知已经在 iOS 16.4 中发布,该版本预计于2023年3月发布,如果您参加了测试版计划,则目前可以使用。
我写了一个教程,展示如何在 PWA 中实现它们。

3

截至今天,在iOS 16.4中,Web Push已经可以在添加到主屏幕后的Web应用程序中使用。

顺便提一下,在Safari实验性功能设置中,默认情况下仍然禁用Push API,但如果将Web应用程序添加到主屏幕,则可以在Web应用程序中使用。


1
现在已经有了,请查看我附上的官方Safari发布说明链接。 苹果刚刚在iOS和iPadOS 16.4 beta 1中为渐进式Web应用(PWAs)启用了网络推送通知。 在iOS上为保存在主屏幕上的Web应用程序添加了对Web Push的支持。 Safari发布说明链接

-1

我有一个解决方案可以提出。如果PWA可以向服务器发送消息并将其存储在数据库中,手表应用程序就可以始终从同一服务器拉取并显示信息。这不是理想的解决方案,但这是我的工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接