作者 | Castie!
来源 | https://coderzsq.github.io
日常扯淡
首先申明,这绝对不是标题党,看完全文你一定也能够自行的写出一个资源搜索App,其实这个App,本来是想在App Store卖钱的,毕竟感觉需求量还是很大,虽然知道有可能涉及版权的问题,但本想只做一个搜索功能,让用户自行下载应该也能打打擦边球蒙混过关吧,谁知现在苹果审核 5.2.3,直接搬出了法律神器,让我不敢逾越雷池一步,经过内心的挣扎,还是决定不铤而走险,开源以回报社会。
其实这个App,并不是特别复杂,说实话也没有什么技术含量,iOS端的代码是在2天闲暇时间内写完的,有一定经验的开发者估计也不会差很多,核心在于对数据的爬取,这里我是用Python写的爬虫,其实爬虫并不复杂,应该说是简单至极,我整个服务端加上爬虫也就区区300行不到的代码,可见难易程度,所以本文,并不会教你如何进行实现贴代码,而是会在产品的思路上进行探讨,如果你有看过我之前一篇 iOS 开发者该认真思考的「三个问题」[1]就应该了解技术并不是很重要,重要的是对人性的把握。
技术选型
由于这是一个全栈的项目,这可是真全栈,从产品,设计,运营,客户端,服务端,数据端,运维都有所涉及,所以不能片面的看待问题,我们需要一个系统的视角,如何能够让这款产品受到用户的喜爱,(的确有很多的朋友想要这款软件,但是... 苹果爸爸不允许呀...),回到正题,所以我们需要一个最小可用的APP,什么是最小可用? 就是实现最少的功能,让功能产生闭环,并能够提供价值。
所以以这个为出发点,设计了最简单的交互逻辑,即点击可得和搜索可得,减少用户交互的逻辑,让用户直接达到爽感。所以,为了完成这个目标,我们需要一些开发工具,我这里用的很简单,Xcode,Photoshop,Sublime Test,即可,对,我并没有使用产品原型设计工具,因为这种东西本来就是给开发看的,然而当你自己成为开发者后,就等于你有了上帝之手,直接就可以进行实现,有逻辑设计不合理之处也能够自行修正。
前端,我就不多介绍了,因为本想以盈利为目的,所以选择了iOS端的App Store,然而... 后端我选用的是Python的Flask,非常适合开发小型App,代码少易控制,简单易用。
获取数据
如何获取数据,这里我们使用的是豆瓣的数据,如何爬取豆瓣,网上有大把大把的教程,可以自行查阅,而链接的地址呢,你可以自行网上查找可用的免费资源分享网站进行爬虫,虽然有些会有反爬机制,但你可以反反爬呀,就像逆向一样,别人可以反调试,你可以反反调试呀,网络安全,一点都不安全... 这里我就选在了,种子猫,磁力搜,飘花,讯播,被窝进行了爬虫,使用豆瓣爬到的数据进行其他网站的爬虫即可。
构建服务
之前有说,我选用的是Flask框架,所以只需要用装饰器就可以立竿见影的写接口,具体业务逻辑可以自行阅读源码,只要你有一点点开发经验就可以看懂的,这里的难点... 也不是难点,就是如何部署服务器,这就是有关运维的操作了,我这里使用的是Nginx + gunicorn搭建的服务器,具体操作也可以看下教程,具体就是端口映射和负载均衡,记得如果是阿里云的话,需要开启端口的访问权限。
产品设计
有了数据,接下来就该进行产品设计了,对于设计方面,其实作者并没有什么设计的经验,所以直接参考了Apple原生应用的设计语言,然后用最少的逻辑达到想要的效果,真可谓是极简主义了哈哈哈,当然设计的时候也有一些小细节需要注意,比如iOS13的暗黑模式的切换,还有modal的时候iOS13和之前默认的效果不同都需要进行兼容,还有的就是,颜色方面不要用纯黑和纯白,这样看起来的效果会比较的好。icon设计的话,可以使用阿里开源的icon库[2],这不是给阿里打广告,也不需要我这种菜鸡来打广告hhh。
有关运营
说到这里就要贴出App Store 审核指南[3],如果你需要自己开发一个App,建议你通读此文,我就是踩到了这个坑... 被5。2。3给拒之门外了,
你需要了解ASO,这里推荐给你 七麦数据 这个网站。可以了解一些搜索指数,什么样的关键词是用户会经常搜索的,这样可以极大的曝光你的App。
最后需要做的就是收集用户反馈以及建立社群,但我并没有走到这一步... 有机会再分享吧。
效果展示
接下来只需要进行iOS端的开发了,我这里就简单的使用了OC + StoryBoard的传统开发模式,等SwiftUI成熟了之后再切换成Swift开发吧,如果想要学习Swift 可以关注我的另一个仓库。
开源分享
iOS 项目相关仓库[4]
Native 技术练习仓库[5]
Data 技术练习仓库[6]
本文所述代码 已用红框所示。
写在最后
有了这次的经验,下次开发会效率快的多,有想法就去实现,而不是写那种没有用的Demo,期待作者下次优秀的作品吧!
参考
[1]https://coderzsq.github.io/2019/01/iOS-%E5%BC%80%E5%8F%91%E8%80%85%E8%AF%A5%E8%AE%A4%E7%9C%9F%E6%80%9D%E8%80%83%E7%9A%84-%E4%B8%89%E4%B8%AA%E9%97%AE%E9%A2%98/
[2]https://www.iconfont.cn/
[3]https://developer.apple.com/cn/app-store/review/guidelines/#intellectual-property
[4]https://github.com/coderZsq/coderZsq.project.ios
[5]https://github.com/coderZsq/coderZsq.practice.native
[6]https://github.com/coderZsq/coderZsq.practice.data