ios - 从 PWA 向 iOS 发送推送通知

标签 ios web-applications push-notification progressive-web-apps blazor

我有一个使用 Blazor WebAssembly 制作的 Progressive Web App,我想知道是否可以向 iOS 设备发送推送通知?虽然人们说如果现在可以在 MacOS 上的 Safari 上运行,但 Push API 的网站说它不支持 iOS 上的 Safari。

  • 如果我以 iOS 为目标,是否需要包装每个 Web 应用程序?我没有 MacBook,我需要购买一台来实现这一点吗?
  • 还有 Firebase 和 Azure 通知中心,我不能只使用他们的服务为 iOS 发送通知吗? Firebase 只有 Objective-C 和 Swift 示例。
  • 这也引出了另一个问题:通知的传输方式是否取决于平台?我对云服务在这方面的作用感到困惑。
  • 最佳答案

    您只有三个主要选项可以在 iOS 上为 PWA 获取推送通知。在这两种情况下,您都必须在 Apple Developer 门户上注册一个 App ID,并获得相应服务的权限。对于选项 1,您注册的 App ID 必须具有 Apple Wallet 的权限。对于选项 2 和 3,您必须具有推送通知的权限。在这两种情况下,您都应该记录您的 Bundle ID 和 Team ID,以备日后需要。

  • 选项 1(更简单):使用 PassKit 设置通用 Apple Wallet 通行证,它可以代理与原生通知非常相似的通知。 Here's some documentation , 和 here's a working demo了解如何将推送通知发送到已注册的设备。
  • 选项 2(更难):使用 Firebase Cloud Messaging或像 Node-APN 这样的包以“正确”的方式发送推送通知,使用 Apple Developer Portal 中的 P12 或 P8 key 签名。这变得很棘手,主要是因为您需要 iOS 设备标识符,它只对本地安装的应用程序公开。恐怕我没有关于如何从 PWA 中获取此设备 ID 的答案,如果没有它,此方法将不起作用。
  • 选项 3(不是 PWA):您可以将 App ID 与配置文件和 P12 或 P8 key 一起使用,类似于上一个选项,但您将应用程序包装在 Apache Cordova 中, 并分发它(通过公共(public)应用商店,或使用 MDM 软件和通过私有(private) Apple 商务管理)。

  • 这些是你的选择。我已经用尽了所有可能的途径来研究这个问题,我相信至少在接下来的几个月里,这些仍然是你唯一的选择。将来我们可能会看到对 Web Push 的进一步支持,或者只是一种从 Web 获取设备 ID 的方式,但在那之前,就是这样。目前没有其他方法可以解决这个问题。
    资料来源:我为 Subway、Gartner、Morgan Stanley 和 PwC(以及许多其他公司)等主要品牌设计和开发应用程序。我的研究是最近才进行的,包括与 Apple 的 WebKit 负责人以及世界上最重要的 PWA 和 iOS 专家之一的直接沟通。

    关于ios - 从 PWA 向 iOS 发送推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63819485/

    相关文章:

    ios - 透明背景变白

    iphone - 适用于 iOs 7 的特定 StoryBoard

    web-applications - 我如何提供 Polymer Web 应用程序?

    Firebase 推送通知在 Firefox 63 中不起作用

    ios - UIPasteboard:NSString 拒绝复制到剪贴板

    ios - 接口(interface) Object() {} 和 @implementation Object @end 中的变量之间的区别

    使用 Django csrf_exempt View 注册 Android GCM。最佳实践?

    android - Android通知中来自外部网址的setSmallIcon

    php - 保护网络应用程序的基本原则?

    asp.net - 增加 ASP.NET 站点的executionTimeout 和maxRequestLength 是否有任何危险?