从 PWA 向 iOS 发送推送通知
Sending Push Notifications to iOS from PWA
我有一个使用 Blazor WebAssembly 制作的渐进式 Web 应用程序,我想知道我是否可以向 iOS 设备发送推送通知?尽管人们说现在可以在 MacOS 上的 Safari 上运行,但 Push API 的网站表示它不支持 iOS.
上的 Safari
如果我的目标是 iOS,是否需要包装每个 Web 应用程序?我没有 MacBook,是否需要购买一台才能实现此目的?
还有 Firebase 和 Azure Notification Hub,我不能只使用他们的服务为 iOS 发送通知吗? Firebase 只有 Objective-C 和 Swift 个示例。
这也引出了另一个问题:通知的传输方式是否取决于平台?我对云服务在这方面的作用感到困惑。
您只有三个主要选项来获取 PWA iOS 上的推送通知。在这两种情况下,您都必须在 Apple Developer 门户上注册一个 App ID,并获得相应服务的许可。方案一,你注册的App ID必须有Apple Wallet的权限。对于选项 2 和 3,您必须具有推送通知的权限。在这两种情况下,您都应该记录您的 Bundle ID 和 Team ID,以备日后需要。
选项 1(更简单):使用 PassKit 设置通用 Apple Wallet 通行证,它可以代理与本机通知非常相似的通知。 Here's some documentation, and here's a working demo 如何向注册设备发送推送通知。
选项 2(更难):使用 Firebase Cloud Messaging or a package like Node-APN 以“正确”方式发送推送通知,使用来自 Apple Developer Portal 的 P12 或 P8 密钥签名。这变得很棘手,主要是因为您需要 iOS 设备标识符,它只对本机安装的应用程序公开。恐怕我没有关于如何从 PWA 中获取此设备 ID 的答案,没有它,此方法将不起作用。
选项 3(不是 PWA):您可以将 App ID 与配置文件和 P12 或 P8 密钥一起使用,类似于上一个选项,但您将应用程序包装在 Apache Cordova,并分发(通过 public 应用商店,或使用 MDM 软件并通过私人 Apple 商务管理)。
这些是你的选择。我已经用尽了所有可能的途径来研究这个,我相信至少在接下来的几个月里,这些将仍然是你唯一的选择。未来我们可能会看到对 Web Push 的进一步支持,或者可能只是一种从 Web 获取设备 ID 的方式,但在那之前,仅此而已。目前没有任何其他方法可以解决此问题。
来源: 我为 Subway、Gartner、Morgan Stanley 和 PwC(以及许多其他品牌)等主要品牌设计和开发应用程序。我的研究是最近的,包括与 Apple 的 WebKit 负责人以及世界上最重要的 PWA 之一和 iOS 专家的直接交流。
我有一个解决方法要提出。如果 PWA 可以将消息发送到服务器并将它们存储在数据库中,则手表应用程序可以始终从同一服务器拉取并显示信息。这不是理想的解决方案,而是我的工作。
我有一个使用 Blazor WebAssembly 制作的渐进式 Web 应用程序,我想知道我是否可以向 iOS 设备发送推送通知?尽管人们说现在可以在 MacOS 上的 Safari 上运行,但 Push API 的网站表示它不支持 iOS.
上的 Safari如果我的目标是 iOS,是否需要包装每个 Web 应用程序?我没有 MacBook,是否需要购买一台才能实现此目的?
还有 Firebase 和 Azure Notification Hub,我不能只使用他们的服务为 iOS 发送通知吗? Firebase 只有 Objective-C 和 Swift 个示例。
这也引出了另一个问题:通知的传输方式是否取决于平台?我对云服务在这方面的作用感到困惑。
您只有三个主要选项来获取 PWA iOS 上的推送通知。在这两种情况下,您都必须在 Apple Developer 门户上注册一个 App ID,并获得相应服务的许可。方案一,你注册的App ID必须有Apple Wallet的权限。对于选项 2 和 3,您必须具有推送通知的权限。在这两种情况下,您都应该记录您的 Bundle ID 和 Team ID,以备日后需要。
选项 1(更简单):使用 PassKit 设置通用 Apple Wallet 通行证,它可以代理与本机通知非常相似的通知。 Here's some documentation, and here's a working demo 如何向注册设备发送推送通知。
选项 2(更难):使用 Firebase Cloud Messaging or a package like Node-APN 以“正确”方式发送推送通知,使用来自 Apple Developer Portal 的 P12 或 P8 密钥签名。这变得很棘手,主要是因为您需要 iOS 设备标识符,它只对本机安装的应用程序公开。恐怕我没有关于如何从 PWA 中获取此设备 ID 的答案,没有它,此方法将不起作用。
选项 3(不是 PWA):您可以将 App ID 与配置文件和 P12 或 P8 密钥一起使用,类似于上一个选项,但您将应用程序包装在 Apache Cordova,并分发(通过 public 应用商店,或使用 MDM 软件并通过私人 Apple 商务管理)。
这些是你的选择。我已经用尽了所有可能的途径来研究这个,我相信至少在接下来的几个月里,这些将仍然是你唯一的选择。未来我们可能会看到对 Web Push 的进一步支持,或者可能只是一种从 Web 获取设备 ID 的方式,但在那之前,仅此而已。目前没有任何其他方法可以解决此问题。
来源: 我为 Subway、Gartner、Morgan Stanley 和 PwC(以及许多其他品牌)等主要品牌设计和开发应用程序。我的研究是最近的,包括与 Apple 的 WebKit 负责人以及世界上最重要的 PWA 之一和 iOS 专家的直接交流。
我有一个解决方法要提出。如果 PWA 可以将消息发送到服务器并将它们存储在数据库中,则手表应用程序可以始终从同一服务器拉取并显示信息。这不是理想的解决方案,而是我的工作。