从PWA发送推送通知到iOS

时间:2020-09-09 21:00:45

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

对不起,我知道之前已经有人问过这个问题,但是我找不到更新的答案。

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

  • 如果我定位到iOS,是否需要包装每个Web应用程序?我没有MacBook,是否需要购买一台MacBook?

  • 还有Firebase和Azure通知中心,我是否可以仅使用它们的服务为iOS发送通知? Firebase只有Objective-C和Swift示例。

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

如果有人能清除我的头雾,我将不胜感激。

2 个答案:

答案 0 :(得分:9)

您只有三个主要选项来获取在PWA的iOS上运行的推送通知。在这两种情况下,您都必须在Apple Developer门户上注册一个应用程序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 MessagingNode-APN之类的包以“正确”的方式发送推送通知,并使用Apple Developer Portal中的P12或P8密钥签名。这变得棘手,主要是因为您需要iOS设备标识符,该标识符仅对本机安装的应用程序公开。恐怕我没有关于如何从PWA中获取此设备ID的答案,没有它,该方法将无法工作。

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

这些是您的选择。我已经竭尽全力研究这个问题,并且我相信至少在接下来的几个月中,这些仍然是您唯一的选择。我们可能会在将来看到对Web Push的进一步支持,或者也许只是将来从Web上获取设备ID的一种方式,但是直到那时,就是这样。目前没有其他方法可以解决这个问题。

来源:我为Subway,Gartner,摩根士丹利和普华永道(以及许多其他公司)等主要品牌设计和开发应用程序。我的研究是最近的,包括与Apple WebKit负责人以及世界上最重要的PWA和iOS专家之一直接交流。

答案 1 :(得分:0)

我不确定它如何与云服务一起使用,但是对于初学者来说,您可以在BlazzingPizza研讨会上检查Blazor团队所做的实施。

这里是JS代码,这里是server代码。