重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们之前有一篇《抓包工具 Charles》中,有告诉大家如何抓取 Https 的 App 数据,其中,Demo 给出了 JD 首页的抓取;本系列课程开始时,我就说过,我们会针对 JD App 的模仿来学习 iOS Swift5 的开发。
在漠河等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、做网站 网站设计制作专业公司,公司网站建设,企业网站建设,高端网站设计,成都营销网站建设,成都外贸网站建设公司,漠河网站建设费用合理。
本篇没有技术含量,不涉及到技术,仅分析 UI 和数据(不要吐糟我水文,为后面的 UI组件开发做铺垫)。
我们先来看一下 JD App 长的如何,如下图:
上图未完全展示所有的元素,大家如果有 JD App,可以自行打开查看:
我们都知道,首页非常重要,是最顶级的流量入口,因此,首页会通过不同的 UI 组件,来尽可能多的、换着花样的方式来向用户展示推荐商品或者是爆款商品,除了以上 JD 用到的这些 UI 组件,还可以有其它 UI 组件(大家可以多看看不同的 App,如:天猫、PDD、爱奇艺、腾讯视频等)。
用 Charles 抓包后,我们拿到原始的请求,之后可以使用其它网络请求工具,来反复请求该接口,这里,我用 postman 来模拟请求:
该工具,可以将返回的 JSON 美化,方便我们查看数据结构和字段。
之前我就说了,会吐糟 JD App 的首页接口返回的数据结构,简直是『目瞪狗呆』!为啥这么说,请看我来分析(特意开一篇来吐糟):
上图中,我们可以看到 floorList 是一个对象数组:
第一个对象,就是我们说的类目导航栏,其中有个 content 字段,也是一个对象数组;
接下来,我们分析第二个对象,它是轮播图(Banner):
我们跳过第三对象,分析第四个对象,它就是小图标(豆腐块),其中 content 字段,类型变成了对象,而不是对象数组;
好了,后面的我不想分析了,分析暂时到此,为何?
因为,当初我分析了前两个对象(第一、二)后,竟然天真的以为所有的对象中 content 字段都会是对象数组,然后,我去反序列化时,直接报错,我就很奇怪,对我定义的接收 model 做减法,最终定位到 content 字段有问题,然后,依次看了 floorList 的数据,才发现真相(我表示,负责 JD 首页的程序猿是有多么的悲哀);然而,转念一想,其实我可能错了,大公司是分垂直业务线的,因此,会有多个垂直业务团队(产品、运营、研发、测试等),所以,首页也就是这些垂直团队的必争之地,因此,首页接口可能只是聚合了这几个业务团队的接口,App端也是由相应的业务团队自己负责,而不是如小公司一样,由一人负责。
本篇分析到此,先暂时和大家说再见,下一篇开始,我们将进入组件化的开发、然后再集成在一起,用真实的数据将所有的 UI组件窜起来展示最终的效果。
以下是与iPhone 6、7、8 (375×667pt) 相比。
Status Bar 高度由 20pt 增长为44pt。
底部需要预留 34pt 给 Home Indicator区域(下面有详细说明)
宽度不变,高度多出 145pt,但由于 Status Bar 以及 Home Indicator,实际上可有效利用的高度为
145 – 24 (Status Bar) – 34 (Home Indicator) = 87pt
键盘高度由 216pt 增长为 291pt,设计文字区域时要小心
包含 Home Indicator,Tab Bar 高度由 49pt 增长为 83pt。(下面有详细说明)
注意横屏时Home Indicator的高度为21pt,需要格外注意
详细可参考官方文档 Human Interface Guidelinesde中Visual Design的Launch Screen
官方文档建议使用storyboard(即新建项目中的LaunchScreen.storyboard)作为启动图适配方案 ,不再建议使用LaunchImage方式,如下图:
详细可参考官方文档 Human Interface Guidelinesde的Icons and Images-App Icon
下面给出官方尺寸截图:
SDK
2007年10月17日,史蒂夫·乔布斯在一封张贴于苹果公司网页上的公开信上宣布软件开发工具包。它将在2008年2月提供给第三方开发商。软件开发工具包于2008年3月6日发布,并允许开发人员开发iPhone和iPod touch的应用程序,并对其进行测试,名为“ iPhone手机模拟器” 。
然而,只有在付出了iPhone手机开发计划的费用后,应用程序才能发布。自从Xcode3.1 发布以后,Xcode就成为了iPhone软件开发工具包的开发环境。第一个Beta版本是iPhone SDK 1.2b1(build 5A147p)它在发布后立即就能够使用了。
由于iOS是从于Mac OS X核心演变而来,因此开发工具也是基于Xcode。该SDK需要拥有英特尔处理器且运行Mac OS X Leopard系统的Mac才能使用。其他的操作系统, 包括微软的Windows操作系统和旧版本的Mac OS X都不支持。
SDK本身是可以免费下载的,但为了发布软件, 开发人员必须加入iPhone开发者计划, 其中有一步需要付款以获得苹果的批准。加入了之后,开发人员们将会得到一个牌照,他们可以用这个牌照将他们编写的软件发布到苹果的App Store。
发布软件一共有三种方法: 通过App Store,通过企业配置仅在企业内部员工间应用,也可通过基于"Ad-hoc"而上载至多达100部iPhones。
扩展资料:
ios为客户提供信息基础设施的投资保护。ios今天支持的许多特性是大多数客户未来需要的特性。随着一家公司的成长扩展到新的领地,随着兼并收购带来的基础机构复杂性以及协议转换或新流量模式的出现,ios提供的体系结构能使机构灵活地应用变化和经济有效地进行扩展以满足新的需求。
ios允许我们的客户迅速调节适应新的模式,更长时间地保持其信息基础机构投资;其结果是随时间推移提供投资保护和降低拥有成本。
参考资料来源:百度百科-iOS
相信各位读了之前的两篇文章,对pods的使用已经相当熟练了。不过在纷繁复杂的实际使用场景下,可能还是会遇到一些问题。本文就结合自己的实践经验,做一些快问快答,希望大家能多多补充交流。话不多说,那我们就即刻开始吧!
pod系列文章
Cocoapods,让iOS开发更简单(一):走近Cocoapods
Cocoapods,让iOS开发更简单(二):创建私有库
Cocoapods,让iOS开发更简单(三):实践经验汇总
一文带你快速分清静态库-动态库-Framework
一般推荐使用指定版本或范围版本号,以确保依赖的稳定性。
总结 :能用pod install解决问题的,就不要用pod update。因为pod update会把依赖库全部检查一遍,不仅慢有时候还会出现坑。
忽略Pods警告,有些第三方Pod集成进来会有一大堆警告信息,在Podfile中对应的target或分组下加上关键字inhibit_all_warnings!就可以把警告忽略。
作用:
在pods中用frameworks替代.a静态库。
场景:
swift项目pods默认开启(use_frameworks!),OC项目pods默认关闭(#use_frameworks!),同时需满足以下两点,
解析:
swift工程依赖了OC工程的话,需要use_modular_headers!
示例:
为某个 Pods 使用模块化标头,可以使用以下语法:
pod 'TestPodLib', :modular_headers = true
另外,当全局使用 use_modular_headers! 属性时,同时还可以使用以下方法从模块化标头中排除特定的Pod:
pod 'TestPodLib', :modular_headers = false
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
常用的方式调用pod中的素材是不生效的,因为默认是从mainBundle中读取的,如
打在pod中的素材已经不在mainBundle中而在对应组件下的bundle 里面,所以应该这么调用:
在用CocoaPods集成第三方库之后,默认情况下,使用类似#import XXX/YYY.h的方式引入第三方库的头文件。
pod search只会搜索本地缓存的库,如果想搜索到最新的第三方框架或者某个框架的最新版本,必须先使用pod repo update。
[img]