对不起,我知道之前已经有人问过这个问题,但是我找不到更新的答案。
我有一个使用Blazor WebAssembly制作的Progressive Web App,我想知道是否可以将推送通知发送到iOS设备?尽管人们说现在可以在MacOS上的Safari上运行,但Push API的网站却说它不支持iOS上的Safari。
如果我定位到iOS,是否需要包装每个Web应用程序?我没有MacBook,是否需要购买一台MacBook?
还有Firebase和Azure通知中心,我是否可以仅使用它们的服务为iOS发送通知? Firebase只有Objective-C和Swift示例。
这还引发了另一个问题:通知的传输方式是否取决于平台?我对云服务在此上的作用感到困惑。
如果有人能清除我的头雾,我将不胜感激。
答案 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 Messaging或Node-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)