如何快速构建一个App,就工作中的一些积累,总结一下,各种手机端常用技术的开源框架。
(1) 特征页:一般是几张图片做的轮滑器,最后一张链接指向登录页,在更新广告比较频繁的电子商务app上,比如淘宝,一般会隔一段时间会读取新的广告页。个人认为有2种实现方式:①指令消息,EMB推一条消息,客户端接收消息,向服务端某一路径下载资源,替换原有广告页,接收消息之后客户端同时应该让用户下次进入时,先进入广告页(适用于已集成即时通讯类的App) ②定时检测,每次应用启动或者每隔24小时检测。
(2) 登录功能,很多app登录页会有第三方登录,比如qq,微博(相应的sdk分别在相应的官网上下载)等登录,(强身份认证类App可能不太适合),一些技术博客类app可能适用,大家看到的东西是一样的。
(3) 支付功能,比较多的是微信支付、支付宝支付、银联支付。
(4) 分享功能:比较多的是qq分享,微博分享,微信、朋友圈分享等等,同样需要下载相应sdk进行集成。
(5) 即时通讯:消息(socket),比较完美的开源库是GCDAsyncSocket,同时支持object-c和swift。
(6) 数据库存储:sqlite与coreData,FMDB是封装sqlite比较好的开源库,coreData 是苹果推荐使用的,优点是不用使用sql语句,直接操作模型,面向对象开发,但是对于一些复杂的数据库操作可能不是很容易实现,FMDB直接和sql语句打交道,熟悉sql的可能更容易找出问题。
(7) 图片缓存:SDWebImage,支持多线程间的图片缓存,AFNetWorking也支持。
(8) 网络访问库:ASIHttpRequest与AFNetWorking,ASI是早期的一个网络访问框架,但后期基本无人维护,同时也不支持64位,相信很多早期项目中最早使用ASIHttpRequest,后过度到AFNetWorking,AFN完美支持64位,并对于图片缓存,文件上传,大文件下载等都支持的比较好。
(9) 文件解压缩:ZipArchive,用的比较多的开源库,很方便对于文件文件夹进行解压缩,一些资源文件放到服务端,手机端下载解压,比如手机端内置H5页面,H5有更新时从服务端下载。
(10) 二维码扫描:ZBarSDK以及苹果iOS7之后的系统AVMetadataObject。
(11) 语音:AVFoundation以及以AVFoundation为基础封装的MLRecorder。
(12) json解析:第三方的有:JsonKit、sbJson,系统的有NSJSONSerialization,jsonkit能够很容易的将字符串转成你想要的数据模型,也能够将数据模型转成字符串以及数据流,现项目中使用了大量的jsonkit来处理,系统NSJSONSerialization效率更高,但相对jsonkit来说更加繁琐。
(13) 布局约束:系统NSLayoutConstraint以及Masonry(第三方),NSLayoutConstraint调用相对繁琐,Masonry使用起来可能更加方便容易。
(14) 图片浏览器:FGallery,可实现类似很多IM以及空间动态实现点图片上一下下一张,也可以扩展事件,比如图片另存以及上传网盘等等。
(15) XML解析:TBXML(现使用的第三方库),GDataXMLNode(谷歌封装的),NSXMLParser(苹果系统自带的),GDataXMLNode是基于DOM方式加载的,NSXMLParser是基于SAX方式加载的。DOM是类似于树,一口气全部加载进来,可节点根据对象来访问获取,SAX是按需加载,遍历到目标节点后就停止,不会将全部节点全都遍历,效率相对较高,适用于大型XML文件。
(16) 转圈蒙板:SVProgressHUD(现LINK使用的)以及MBProgressHUD(网络上呼声相比较高的),个人感觉SVProgressHUD用起来更加方便。
(17) 错误日志:Crashlytics,能够及时收到崩溃邮件,邮件中指出了崩溃的类名,在哪一行崩溃的,能够及时收集用户崩溃情况。
对于第三方库,个人不是很喜欢使用,有时间可以自己封装,如果项目赶进度,可以用实现好的第三方库来解决,自己封装的库可能和需求结合的更紧密,同时也容易维护,只要扩展性以及兼容性足够好,也能够提升自己的代码水平。