【问题标题】:Sending Push Notifications to iOS from PWA从 PWA 向 iOS 发送推送通知
【发布时间】:2020-12-28 08:23:01
【问题描述】:

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

  • 如果我以 iOS 为目标,是否需要包装每个网络应用程序?我没有 MacBook,是否需要购买一台才能实现这一点?

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

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

【问题讨论】:

  • 不,Apple 不允许在 iOS 上推送通知。您将不得不转而使用 SMS。
  • @abraham 在发布我的问题之前我已经看到了这个问题。很不幸的是,不行。我现在正在考虑将我的 WebAssembly 应用程序部署为移动应用程序而不是 PWA。
  • 我们的应用被苹果拒绝了。太疯狂了,这仍然不适用于 2021 年最新的 iOS 版本。
  • iOS 15.4 暗示了 AR/VR 耳机支持和网络应用程序的推送通知。 9to5mac.com/2022/01/31/…

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


【解决方案1】:

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

  • 选项 1(更简单):使用 PassKit 设置通用 Apple Wallet 通行证,它可以代理与原生通知非常相似的通知。 Here'ssomedocumentationhere's a working demo 了解如何将推送通知发送到已注册的设备。

  • 选项 2(更难):使用 Firebase Cloud MessagingNode-APN 之类的包以“正确”方式发送推送通知,使用 Apple Developer Portal 中的 P12 或 P8 密钥签名。这变得很棘手,主要是因为您需要 iOS 设备标识符,它只对本机安装的应用程序公开。恐怕我没有关于如何从 PWA 中获取此设备 ID 的答案,没有它,此方法将不起作用。

  • 选项 3(不是 PWA):您可以将 App ID 与配置文件和 P12 或 P8 密钥一起使用,类似于上一个选项,但您将应用程序包装在 Apache Cordova 中,然后分发它(通过公共应用商店,或使用 MDM 软件和通过私人 Apple 商务管理)。

这些是您的选择。我已经用尽了所有可能的途径来研究这个问题,我相信至少在接下来的几个月里,这些仍然是你唯一的选择。将来我们可能会看到对 Web Push 的进一步支持,或者只是一种从 Web 获取设备 ID 的方式,但在那之前,就是这样。目前没有其他方法可以解决这个问题。

来源:我为 Subway、Gartner、Morgan Stanley 和 PwC(以及许多其他公司)等主要品牌设计和开发应用程序。我的研究是最近才进行的,包括与 Apple 的 WebKit 负责人以及世界上最重要的 PWA 和 iOS 专家之一的直接沟通。

【讨论】:

  • 谢谢凯尔!我现在正在与 Apple WebKit 负责人 Maciej Stachowiak 交谈,看看他们是否可以公开设备 ID 以使选项 2 更可行。尚无保证,但希望我们能在 2021 年看到此选项的一些进展!
  • 我不明白如何测试选项 1。
  • 我可以询问有关选项 2 的任何更新吗?此外,如果用户使用的是 Safari(意味着他们在 chrome 上工作),推送通知是否在 iOS 上不起作用,或者无论浏览器如何,它们都不能在 iOS(iPhone)上工作?
  • @Ayudh 据我所知(2020 iPhone SE with IOS 14),它们不适用于 IOS 上的任何浏览器,所以是手机,而不是浏览器。
  • @amisolani:它们确实适用于 PWA,但它们是一个巨大的痛苦。我们让他们为我现在的雇主正在使用的应用程序工作。有几个箍要跳过,用户需要有关如何将 PassKit 通行证添加到钱包的说明。考虑到它有多大的痛苦以及通知的不可靠和不一致,我不特别推荐它。如果我是你,我会考虑用 Capacitor 或 Cordova 封装应用程序。
【解决方案2】:

我有一个解决方法要提议。如果 PWA 可以将消息发送到服务器并将它们存储在 db 中,则手表应用程序始终可以从同一服务器拉取并显示信息。这不是理想的解决方案,而是我的工作。

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 2021-07-20
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2021-06-11
    相关资源
    最近更新 更多