什么是IOS的渐进式Web应用程序解决方案


79

我想知道IOS设备的渐进式Web应用程序有什么解决方案,因为它们的默认浏览器SAFARI尚不支持渐进式Web应用程序。那么,对于IOS同行来说还有什么选择呢?


1
恭喜您第一个问题。如您所知,渐进式Web应用程序(PWA)的许多必备条件之一就是支持浏览器中的服务人员。不幸的是,Safari不支持Service Workers,因此唯一的替代方法是本机应用程序或简单的网站。
何塞·路易斯

1
在@JoséLuis之后,PWA应该遵循逐步增强的原则,因此在Safari和iOS上向后兼容。这意味着,随着浏览器或OS中提供新功能,核心功能应仍可用,并且应用程序将逐步增强。
凯文·法鲁吉亚

2
请参阅下面的答案。我写了一篇文章,呼吁苹果。它在推特和黑客新闻上引起了轰动。一周后,他们终于开始对此进行开发!
格雷格·布拉斯

2
最后,苹果在TP中增加了对服务人员的支持。您可以在此处阅读有关Safari的PWA支持的更多信息 medium.com/awebdeveloper/…–
aWebDeveloper,

1
真的必须说,将其关闭太广泛太愚蠢了。喜欢认真!为什么?您为什么要关闭一个如此重要的问题?真让我震惊。
格雷格·布拉斯

Answers:


97

请注意,“支持渐进式Web应用程序的浏览器”不是真正的术语,PWA本身是Web应用程序可以为用户提供的一组功能。因此,这不仅涉及Service Worker和App Manifest。

检出:基准PWA检查表

创建此答案后,您可以执行以下操作在iOS / Safari上实现PWA:

  • 网站通过HTTPS提供服务✅
  • 页面在平板电脑和移动设备上响应迅速✅
  • 离线时至少加载起始URL🚫
  • 为“添加到主屏幕”✅❗️提供的元数据
  • 即使在3G上,第一负载也很快
  • 跨浏览器的现场作品✅
  • 页面过渡不会感觉到它们在网络上受阻✅
  • 每个页面都有一个URL✅

如您所见,即使您的页面无法在iOS / Safari上离线工作,几乎所有内容都可以正常工作,将Web应用“升级”为PWA仍然具有巨大的优势。

您真正想要的不是花哨的“ Progressive Web Apps”标题,而是一个为用户提供良好体验和功能的优质Web应用程序。这是一个旅程,您可以通过每个小部分来完成它,因此,它被称为“渐进式”。

关于“添加到主屏幕”的注意事项:Safariapple-mobile-web-app-capable在meta标签中调用了自己的“主屏幕图标”规范。WebApp Manifest Generator对于使用此meta标签的iOS具有后备功能。


7
具有上述功能且没有“服务人员”,您正在开发一个快速且响应迅速的Web应用程序!本地应用程序更多!
Abhishek Nalin

1
downvote用户问有关iOS的答案是如此普遍
Fareed Alnamrouti

为“添加到主屏幕”screen️提供的元数据不起作用。你能详细说明吗?
教授

76

编辑3:

服务人员已于2018年3月30日在iOS的Safari中发货!

编辑2:

一位名叫Ricky Mondello的Apple开发人员在2018年1月24日发布了以下推文:

https://twitter.com/rmondello/status/956256845311590400

“ iOS 11.3和macOS 10.13.4包括Service Workers,这是一个功能强大的规范,允许后台脚本为脱机Web应用程序提供动力。iOS11.3在将Web应用程序添加到主屏幕时还参考Web App Manifest。”

太棒了!

尚无推送通知的消息,但仍然是令人惊奇的消息。

编辑:

我写了一篇文章称苹果为该主题:

https://m.phillydevshop.com/apples-refusal-to-support-progressive-web-apps-is-a-serious-detriment-to-future-of-the-web-e81b2be29676

它被发布到黑客新闻中,并在Twitter上获得了很好的曝光。一周后,他们开始在上面进行开发。所以-敬请期待,看来终于来了!


原始答案:

“因此,不仅涉及服务工作者和应用清单。”

在我看来,这就是PWA的真正意义所在-服务工作者。这就是使您能够执行PWA所能完成的所有令人敬畏的事情的原因。基线已经有很长时间可以实现了,尽管google在技术上已将基线确定为基线分类,但这些东西并不是真正使PWA成为现实的东西。否则,它只是我书中的常规响应式网络应用。

以下列出了由于Apple拒绝支持移动Safari而仍然无法使用的事情(因为它们会失去应用商店的钱):

  • 建立应用程式载入画面
  • 使用推送通知
  • 添加离线支持
  • 创建初始应用程序用户界面以立即加载
  • 通过浏览器引导的对话框提示安装到主屏幕

公认的答案确实在这里描绘了错误的画面。我已经将苹果在移动浏览器中的“原生”体验推到了极限,但这仍然很糟糕。我在移动Safari的全屏模式下遇到了很多问题,而Apple根本不在乎它们。它被视为二等公民,因为它不会像应用商店那样产生收入。

您会注意到,如果将Twitter的新的基于React / Redux的出色移动网站添加到iOS的主屏幕上,它将无法以全屏模式打开。我怀疑这与我发现的原因相同-大量的bug,Apple团队中没有人在研究它们。

Web应用程序清单中曾经在iOS全屏模式下可能出现的加载屏幕神秘地停止了工作,Apple在其论坛上关于该主题的帖子均未发表任何评论。而且必须告诉用户,“哦,嘿,只需单击共享,然后滑到'添加到主屏幕',这是处理问题的一种可怕方法。

这是一个令人伤心的状况。当前接受的答案中的列表实际上应该称为“基线响应式Web应用程序列表”。

在这里回答问题-不,别无选择,您无能为力。您必须玩苹果的游戏,花100美元才能访问应用商店,学习完全不同且更复杂的编程语言,并保持完全独立的代码库。

我刚刚花了6个月的时间为一个客户项目学习React Native,这真是太棒了。我会极力推荐它。您可以使用JavaScript创建真正的本机应用程序,并在iOS和Android之间共享您的代码库。

需要明确的是,我不是反对苹果公司。我使用iPhone并在Mac上进行开发。但是,他们业务战略的这一方面肯定是可耻的。


1
我发现Swift / Xcode是市场上最容易使用的语言/ IDE。他们构建了现代的开发人员语言和面向协议的新范例编程,解决了与多重继承相关的许多问题。他们没有尝试将其用途扩展到自己的产品之外,这是一个耻辱,但是将其称为通过TypeScript / JavaScript进行更复杂的处理将产生误导。我认为TypeScript是他们戴上丑陋语言的丑陋创可贴。我希望网络浏览器能迅速说话。
Ryan Dines

有人在我的文章中向我提到了同样的事情。我对其进行了编辑,使其更加“冗长”。但是您是对的-我可能对来自网络的想法有偏见。但是,Facebook团队在Web上的迭代速度比本地应用程序快5倍,这就是为什么他们制作React Native的原因-所以我认为它有一些优点。
格雷格·布拉斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.