什么是适用于 IOS 的渐进式 Web 应用程序解决方案 [关闭]
Posted
技术标签:
【中文标题】什么是适用于 IOS 的渐进式 Web 应用程序解决方案 [关闭]【英文标题】:What is progressive web app solution for IOS [closed] 【发布时间】:2017-05-02 07:31:50 【问题描述】:我想知道 ios 设备的渐进式网络应用程序的解决方案是什么,因为它们的默认浏览器 SAFARI 还不支持渐进式网络应用程序。 IOS 对应的替代方案是什么?
【问题讨论】:
恭喜您提出第一个问题。您可能知道,众多requisites for a Progressive Web App (PWA) 之一是在浏览器中支持服务工作者。不幸的是,Safari doesn't support Service Workers 所以唯一的选择是原生应用程序,或者一个普通的网站。 跟进@JoséLuis,PWA 应该遵循渐进增强的原则,因此在 Safari 和 iOS 上向后兼容。这意味着核心功能应该仍然可用,并且随着新功能在浏览器或操作系统中可用,应用程序会逐渐增强。 在下面查看我的答案。我写了一篇文章呼吁苹果。它在推特和黑客新闻上引起了不小的轰动。一周后,他们终于开始开发了! 最后,Apple 在他们的 TP 中增加了对 service worker 的支持。你可以在这里medium.com/awebdeveloper/… 阅读更多关于 safari 的 PWA 支持的信息 真的要说关闭这个太宽泛了太愚蠢了#%(#)。喜欢认真!为什么?你为什么要结束一个如此重要的问题?简直让我大吃一惊。 【参考方案1】:请注意,“支持渐进式 Web 应用的浏览器”不是一个真正的术语,PWA 本身就是 Web 应用可以为用户提供的一组功能。所以这不仅仅是关于 Service Worker 和 App Manifest。
查看:Baseline PWA Checklist。
在创建此答案时,您可以执行以下操作以在 iOS/Safari 上实现 PWA:
网站通过 HTTPS 提供 ✅ 页面可在平板电脑和移动设备上响应 ✅ 离线时(至少)加载起始 URL ? 为添加到主屏幕提供元数据✅❗️ 即使在 3G 上首次加载也很快 ✅ 网站跨浏览器工作✅ 页面转换不会让人觉得它们在网络上被阻塞✅ 每个页面都有一个 URL ✅如您所见,几乎一切正常,即使您的页面无法在 iOS/Safari 上离线工作,将您的网络应用“升级”为 PWA 仍然有巨大的好处。
你真正想要的不是“Progressive Web Apps”这个花哨的标题,而是一个为用户提供良好体验和功能的优秀网络应用。这是一个旅程,你可以通过每个小部分来完成它,这就是它被称为“渐进式”的原因。
关于“添加到主屏幕”的注意事项:Safari 有自己的“主屏幕图标”规范,在元标记中称为 apple-mobile-web-app-capable
。Web App Manifest Generator 有一个使用此元标记的 iOS 后备。 em>
【讨论】:
有了上面提到的功能并且没有“服务工作者”,你只是在开发一个快速响应的网络应用程序!原生应用更多! downvote 用户询问 iOS 答案很笼统 为添加到主屏幕提供的元数据 ✅❗️ 不起作用。你能详细说明一下吗?【参考方案2】:编辑 3:
Service Worker 已于 2018 年 3 月 30 日在 Safari for iOS 中发布!
编辑 2:
一位名叫 Ricky Mondello 的 Apple 开发人员在 2018 年 1 月 24 日发了推文:
https://twitter.com/rmondello/status/956256845311590400
“iOS 11.3 和 macOS 10.13.4 包含 Service Workers — 一种强大的规范,允许后台脚本为离线 Web 应用程序提供动力。iOS 11.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 上得到了很好的曝光。一周后,他们开始对其进行开发。所以 - 敬请期待,它似乎终于要开始了!
原始答案:
“所以这不仅仅是关于 Service Worker 和 App Manifest。”
在我看来,这正是 PWA 的真正意义所在 - 服务工作者。这就是使您能够完成 PWA 所带来的所有令人敬畏的事情的原因。基线已经可以实现很长时间了,虽然谷歌在技术上已经将它们建立为基线分类,但这些并不是 PWA 真正成为它的原因。否则它只是我书中的一个常规响应式网络应用程序。
以下是由于 Apple 拒绝支持移动 Safari(因为它们会损失应用商店的资金),您仍然无法使用移动 safari 做的事情:
创建应用加载屏幕 使用推送通知 添加离线支持 创建一个初始应用 UI 以立即加载 通过浏览器引导对话框提示安装到主屏幕接受的答案确实在这里描绘了错误的画面。我已经将苹果“原生”般的移动 safari 体验推到了极限,但它仍然很糟糕。我在移动 Safari 的全屏模式方面遇到了很多问题,而 Apple 根本不关心这些问题。它被视为二等公民,因为它不像应用商店那样赚钱。
您会注意到,如果您将 Twitter 的全新且基于 react/redux 的移动网站添加到 iOS 的主屏幕,它不会以全屏模式打开。我怀疑这与我发现的原因相同 - 大量错误,Apple 团队中没有人在处理这些错误。
曾经在 iOS 全屏模式下可以在 Web 应用程序清单中使用的加载屏幕神秘地停止工作,在他们的论坛上没有任何来自 Apple 的 cmets 关于该主题的帖子。并且不得不告诉用户,“哦,嘿,只需点击分享,然后滑到‘添加到主屏幕’是一种可怕的处理方式。
这是一种可悲的状况。当前接受的答案中的列表实际上应该称为“Baseline Responsive Web App List”。
在这里回答这个问题 - 不,别无选择,你无能为力。你必须玩 Apple 的游戏,支付 100 美元才能访问应用商店,并学习一种完全不同且更复杂的编程语言,并保持完全独立的代码库。
我刚刚花了 6 个月的时间为一个客户项目学习 React Native,它非常棒。我会极力推荐它。您可以使用 javascript 创建真正的原生应用,并在 iOS 和 android 之间共享您的代码库。
需要明确的是,我不是反苹果公司。我使用 iPhone 并在 Mac 上开发。但他们的商业战略的这一方面无疑是一种耻辱。
【讨论】:
我发现 Swift/Xcode 是市场上最容易使用的语言/IDE。他们构建了一种现代开发语言和一种新范式,即面向协议的编程,解决了与多重继承相关的许多问题。他们没有尝试将其用途扩展到他们自己的产品之外,这一事实令人遗憾,但将其称为比 TypeScript/JavaScript 更复杂会产生误导。我认为 TypeScript 是他们使用丑陋语言的丑陋创可贴。我希望网络浏览器能说得很快。 有人在我的文章中向我提到了同样的事情。我对其进行了编辑以说更多“冗长”。但你是对的 - 我可能对来自网络有偏见。但是 Facebook 团队在 Web 上的迭代速度比原生应用快 5 倍,这就是他们制作 React Native 的原因——所以我认为它有一些优点。以上是关于什么是适用于 IOS 的渐进式 Web 应用程序解决方案 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
iOS apple-touch-icon 仅适用于一个 URL
适用于 Kiosk 模式的 Chromebook 渐进式网络应用
可以将渐进式 Web 应用程序注册为 Android 中的共享选项吗?
无法从 Flutter Web 读取 Firestore 中的数据(适用于 iOS 和 android)