欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

为什么苹果还要使用 HTML5 开发 iOS 上的新版 App Store?

程序员文章站 2022-05-04 21:25:21
...
twitter.com/drbarnard/s
@drbarnard: Isn’t it ironic that just after Facebook releases a more native iOS app, Apple releases a more HTML 5 iOS App Store?

回复内容:

以前appstore也是网页版,但iOS6的内嵌网页明显设计不好,经常出现各种状况,才导致用户发现是html5网页。

应用商店本身是个系统软件,无法独立自己升级,只能跟系统一起升级。同时appstore有安装卸载升级软件等超级权限也不可能以普通的软件发布(如果支持那么意味着存在巨大的安全隐患)。系统软件还能保持灵活网页版是个无奈的选择。

另外应用商店跟其他系统内置应用(相机,相册)最大的区别是一个重度运营的业务。经常需要变更内容,而变更的内容很有可能导致UI框架变化。为了调整方便是个不错的选择。

其实还有一个重要的原因是苹果的appstore有三个版本,网页版,itunes版本,手机客户端版本,采用HTML5的好处可以降低让三个平台尽可能很多研发能够复用,同时解决UI框架以及内容调整一致性。从资源角度来说是个节省资源的选择。

实际上百度的android应用商店也是这样的模式,当时在内部坚持这个方式的时候我被怀疑带领团队偷懒。 这是个很有趣的问题,要解释的话,要从 iOS 程序安装方式来说
现阶段的 iOS 程序只存在两种官方允许的安装方式:企业分发, App Store
实际上呢,这两种程序安装方式是一种
所有 iOS App 都是通过:建立桌面书签->下载软件内容( ipa 或者app 封包)-> iOS 系统验证签名-> iOS 系统解包-> iOS 系统建立索引,安装到位
这种安装方法的第一步:建立书签,最简便的方法就是从网页创建了。事实上苹果系统不允许从其他途径创建桌面书签,所以 App Store 必须有页面元素,至少那个购买按钮要是页面元素

其次, App Store 作为 iOS 上的一个收费软件市场,必须得考虑到各种更新和漏洞修补的问题。按照现在的网页处理方式,一旦出现任何市场漏洞,苹果可以马上通过修改页面来处理;如果 App Store 是本地应用的话,很有可能会出现无法处理的问题,因为大家都知道 iOS 系统内置程序的升级都是和 iOS 系统同步进行的,同时 iOS 内置程序的储存位置、权限这两个关键属性和普通程序是完全不同的,也就是说如果 App Store 作为本地程序存在,出了任何问题,苹果唯一的解决方法就是发布新的 iOS 系统,5.0.1,说实在,这是一个对于苹果来说很尴尬的版本号

=========体内酒精含量:0.4%==========
当然,以上的都是本人一人之言,而且本人并非 iOS 系统专家,如有错误,还请包涵 不管是ios上还是mac上,苹果商店一直都是以web内容呈现的,只不过是现在增加了html5元素而已,何必大惊小怪,一直认为苹果是使用native shell包装html页面达到如火纯青的开发者。 为了满足使用不同国家/地区账号登录后加载不同的UI的需求。在iOS7中,依然如此,因为原生应用不可能做到这一点。
而且不仅App Store,iTunes Store等资料库都是使用HTML。
如果这点你不能理解,请参考iTunes Store:

1.中国区的iTunes绝对是史上最傻逼的App,没有之一:
为什么苹果还要使用 HTML5 开发 iOS 上的新版 App Store?
为什么苹果还要使用 HTML5 开发 iOS 上的新版 App Store?吐槽:两个Tab,分别对应“安装iTunes U”和“安装Podcast”——安装之后呢?变成“打开iTunes U”和“打开Podcast”——你们有没有被雷翻?反正我是翻面了。
但是如果到这你就觉得iTunes傻逼,那就是你傻逼了——井蛙不可语海,夏虫不可语冰(说我自己)。


2.在美国区,iTunes是这个样子:
为什么苹果还要使用 HTML5 开发 iOS 上的新版 App Store?
看出啥叫差异了吧?

所以,这玩意肯定还得用HTML写,是不是5我就不管了。 很浅薄的一个观点。如果是本地的应用,那如果出现bug的时候appstore该如何升级自己? iOS、Google Play、Windows 应用商店 都是这样的设计。

* 对这个场景来说,用户体验与Native差别不大
* App Store 也不是不能升,可以借助系统小更新来完成。但这样对用户是可选的,而放在Web上,必须联网访问就把主动权放在厂商自己手里了。 用native把一些系统参数(像app版本,ios版本,unique号)存下来,其他展示都用h5实现,不只是修复bug快,甚至发布一个大的版本升级都不会有太大问题,基本上就等于web了。。