移动应用创新赛总结
date
Jul 6, 2019
slug
CCCC-summary
status
Published
tags
Life
summary
移动创新总结
type
Post
前记
“你为什么喜欢编程”
这是我常被问到的一个问题,我认为编程是现代社会中每个人都可以掌握的“魔法”,我们在生活中享受着各种各样别人写好了的魔法,比如“出门不用钱包即可付款魔法”,“饿了就有外卖送上门魔法”,“买衣服不用出门魔法”。
但另一方面,不是每一件生活中不方便的事情,都有很好的魔法能够解决。但是如果学会了编程,就可以自己来创造一个更好的魔法来解决这些问题,更能够帮助到他人,这就是我喜欢编程的原因。
我的第一个魔法 - 校园助手
2016年10月8日,这是我人生中写下第一行iOS代码的时刻,我试图在我不会一行Objective-C咒语的时候,尝试创造一个能够帮助全校学生查询课表,电费,成绩。同时能够全校学生发说说,二手交易,做网上作业等一系列综合性的一个魔法。
在这之前,我们的学生查课表是去正方教务系统上打印成纸贴在宿舍墙上,查电费要用电脑上水电科的电费网站查询,做网上作业去教务处的作业平台,再加上,二手交易,说说等各种生活服务,全部都要记住不同的账号在不同的平台上才能够进行。
我感觉到十分的不方便,在几个负责后端的学长下的帮助下,刚入大二刚一个月的我开始了零Objective-C基础创造iOS魔法的过程。
![屏幕快照 2019-07-06 下午10.13.10](
2019-07-06 下午10.13.10.png)
我花了一个星期,完成了当初的第一个版本,现在看起来界面十分稚嫩,但因为发布在了App Store,我马上迎来了我的用户们。用户们的反馈声音,让我意识到
我不仅仅是在解决自己的问题,我同时也是在帮助别人
我开始了和实验室另一个学习UI的学姐一起合作,让App变得更加美观且实用,同时在17年5月,我恰好看到了CCCC移动应用大赛的通知,抱着想和其他同学一同进步学习的想法,我报名参加了。
比赛的过程比我想象的要顺利,回想起来,我觉得
1.初赛美观的设计稿,可行的方案介绍。
2.复赛完整的运行视频。
3.决赛可以现场演示的代码,和已经上架App Store的App
是我认为的关键,此外作为前九名公开答辩,我认为很重要一点是需要准备
简洁易懂且美观
的一分钟视频,因为台下评委能够对你app了解最深的就来自于这一分钟的视频。回想起,我最后虽然进入了前九名公开答辩,但只获得了全国二等奖,可能因为一是App的受众近是大学群体,甚至主要在自己学校,二是一分钟视频展示的不够完善。
但我依旧比较开心,因为在我比赛的过程中,我不断完善了我的App,并且根据ITunes Connect统计,我的App“魔法”被用户累计使用了数百万次,获得了4.8星的评分。
我的第二个魔法 - EASY相册
在第一年比赛之后,我一直策划着如何去构思我的第二个魔法,我希望它首先可以帮助到我,其次它可以帮助到其他人。一天我在微信上聊天,想要找到一张很久以前的照片发给朋友,但我怎样都找不着它,我开始意识到,我如果想快速找到这张照片,我只有一种办法--给它进行分类。但当我尝试了市面上带有智能分类的一系列软件,我发现他们都不能够支持将智能识别完的类型保存到本地,这也就是说没法在例如微信,微博之类的其他App中选择这些类型。
我开始构思,如何自己来实现一个这样的分类,我调研了tensorflow等一系列的市面上成熟的机器学习方案,遗憾的是如果tensorflow模型放在服务端,我需要将用户照片上传上去,这将十分不安全同时也加到了运维成本,而如果打入在App中,由于tensorflow的依赖库存在,App体积将到600mb+,这是我无论如何也无法接受的。
正当我一筹莫展的时候,Apple在WWDC2018宣布了CoreML2和Create ML,这仿佛使我看到了希望。我立马升级了mac的beta系统,并安装的Xcode的beta版,接着通过python爬取了一系列用来训练的数据集,接着丢入了Create ML中,大约二十分钟后,我得到了一个不足20kb的模型,我将其放至了我的App中,它控制台中,它成功的将我照片里每张照片的类型给智能识别出来了。
遇到的难题
接下来我和我在学校找的另一名负责ui的队友,不断将界面完善。期间我遇到了很多技术上的问题。
比如识别速度过慢,我需要通过多线程来解决,又比如识别完的照片,我需要保存到数据库,这样下次不用再次识别。
其中我遇到最棘手的一个问题,是对相册地理位置的识别。在每张相片中是存取了相片拍摄时的经纬度的,但是要获取这个经纬度对应的城市,需要构造一个CLGeocoder译码器来发生网络请求来获取城市名。而复杂的情况在于这个api调用是有频率限制的,我想过了很多方案,比如维持队列每过多久请求一次,遇到请求失败后以2的次方为重试时间来重试。但是都无法在简短的时间内获取到一万多张照片的位置。
后来我灵机一动,想到一个城市其实经纬度是一个很大的范围,我只要在前面每张照片请求时维持个map,来映射经纬度和城市的关系,然后将经纬度小数点范围后三位相同的照片都归类于这个城市,我就不必请求那么多次了,一个城市的所有照片请求一次即可全部完成了。
决赛时刻
最终我在深圳->杭州的高铁路上,将我app的所有主体界面全部完成了。我们的决赛分为两天,是摆摊的形式来各自宣传自己的app,在第一天结束时,我意识到我还需要一些东西,能够让评委们相信我做的app是可行,有价值的。我想到了一个方案--上架至App Store。但是我只有一个晚上的时间,如何能够在一个晚上就审核通过呢?
我想到了apple提供给开发者们的
,我用英文描述了我正在中国杭州参加由apple&浙大举办的CCCC比赛,为了能够展示作品,我希望能够发布到App Store上的意愿。
9月16日早上9点是决赛开始的时间。
9月16日凌晨2:30分,我的App通过App Store最终审核发布。因为iOS 12正式版在9月18日才发布,所以我此时的状态是等待apple发布,但是已经全部可以在App Store上预约审核了,并且每一个评委可以通过Test Flight的方式体验我的App
最终在决赛答辩之后,我获得了全国一等奖,超越了去年的自己。
后记
决赛之后,我的主要精力其实依旧还是放在了开发「EASY相册」的过程上。我认为做一款App要有“工匠精神”,比赛只是一个平台,可以去引导你去和队友们一起实践、创新。但比赛获奖不是做App的最终目的,我最终是希望能让自己的App“魔法”给越来越多的人带来帮助。
我希望有一天,我能够将这个app完善的足够好,然后把它带给更多需要整理相册的人。