剑客
关注科技互联网

Focus – 有些事情需要这份执着

本文类型:投稿

作者: cloudsthinker

Focus一次探索watchOS的实践。再次慨叹下Apple的审核速度,just one day…

Focus – 有些事情需要这份执着

人这一辈子总有一些一定要去做必须要去体验的东西。

对于这些事物的追求需要这份执念。

Focus帮助我们专注于做最重要的事情,给她一个期限,可能是一两年,也可能只有几天或者几小时,总之一旦决定拥有她,那么中途就不要背弃她。

人这一辈子不要过得太复杂,专注于现在,执着于每次的努力,当回看过往,必将为自己而骄傲。

Focus App Store: 传送门

Focus长什么样

Focus - 有些事情需要这份执着

Focus参数

  • Language: pure Swift3

  • Support: iOS9+、watchOS3.0+(包含Complication、WatchConnectivity)

  • Vender: Realm(iOS、watchOS)、DCPathButton、IQKeyboardManagerSwift、SCLAlertView、SnapKit

  • OpenSource:梳理完毕后开源

为什么要做这么个App

Apple发布了新款的Apple Watch Series2,之前一直想涉足watchOS的领域,一看设备更新了就赶紧入手了一款。这么贵的东东,不开发点东西感觉对不起自己花出去的银子。于是在认真体验了一段时间后,进行了以下产品思考:

Focus - 有些事情需要这份执着

最后决定先尝试制作一款GTD类APP,跟其它同质App的区别呢就在于只关注于一件事情的实现引导。提供的Apple Watch端App包含了几乎所有iOS端的功能,同时结合Complication可以将Focus的精简信息展现到表盘中。利用Apple Watch的贴近特点,进行一些轻度提醒。(说不定过段时间可能会搞一下那个偷偷录音的APP ^_^)

Focus让我了解了什么

1. Swift3

Swift3更新以来,还没有将原有的swift2项目进行迁移,正好拿个人项目进行了实践。

综合体会就是更加优雅简洁了,这里就不展开描述了。推荐几个不错的教程,首先是官方文档,然后有猫神的《Swifter – 100 个 Swift 必备 tips》(买的正版,动态更新为了swift3的版本),还有raywenderlich的swift相关教程也在第一时间更新为了swift3版本(不过略贵,感兴趣的可以联系我,发你们)。

2. watchOS 3.0

初涉watch SDK,现在的感觉是相较iOS SDK各有优劣,不过watch SDK的劣势多了一些。

几个小例子:

  • table这一块,watchOS的处理会更“简约”一些,没有这么多的数据代理,转而采用了配置方法的调用,初始化配置更集中了。这里也是针对watch的使用场景进行了SDK层面的精简优化。

  • 自带一个计时性质的文本控件date、timer,一般的场景只需要简单配置就可以使用了(不过可定制项比较有限,Focus中为了统一,还是改为自己实现一个倒计时)

  • 感觉watchOS中的picker就是一个噩梦。。。,官方是没有提供watchOS版本的日期选择器的,所以需要自己用picker进行组装,里面好多坑,这块等开源后感兴趣的同学可以参考下。

  • 关于控件封装,原本搞完了watchOS版本的日期选择器是打算抽离封装一下的,但是发现watchOS的控件封装真的没有太好的途径,总不能把一个controller分享出来吧。。。(虽然github上有人这么搞)

几个建议:

  • 将iOS与watchOS的公用模块提取为单独的framework方便复用。

  • iOS与watchOS的数据同步通过WatchConnectivity,由于一些技术文章的更新缓慢,其中介绍的appgroup方式其实已经不适用了(被坑了一轮)。

    同时建议除了配置自动的同步机制外,添加一个按钮触发的同步操作,以方便用户及时进行同步。例如Focus中当点击iPhone或者watch主页面中央的小漏斗时,会弹出同步提示窗口:

  • Focus - 有些事情需要这份执着

  • 关于文本录入这块watchOS3已经可以使用presentTextInputController(withSuggestions:allowedInputMode:)了,弹出的输入模块可以进行语音录入,建议选择以及新更新的Scribble,也建议大家使用。(虽然中文的录入还是有点难用)

3. Realm

早就听说了realm的大名,一直想尝试一下,正好借助这个机会集成了进去。不过得出的结论是,其实就目前的realm而言,个人感觉不太适合用于watch相关的应用。主要原因就是库文件略大,watch应用四五十兆的应用大小限制,使得每一寸空间都显得特别珍贵(App Store审核的限制,其实相较Apple Watch的存储来说集成realm造成的空间占用还是可以接受的)。

说说使用realm的几点感受:

  • 用起来确实很爽,很容易上手,基本就是在操作对象,用过coredata的同学应该很习惯这种方式。

  • 数据库版本迁移这块仔细一点也很容易搞定。

  • 因为要同时集成iOS跟watchOS两个版本的realm所以不要将他们放在同一个项目文件夹下,分别创建文件夹添加引用。

  • 官方的提供的run script:

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"

需要在iOS和watch extension的Build Phases中都要进行添加调用。(我就是因为没有在extension中添加调用导致模拟器真机运行正常,上传App Store却总是验证报错…)

  • 对于添加了realm的watchOS项目建议打开bitcode,也是为了优化watch APP的体积。

4. “新”产品上线

好久没有完整的操作一遍应用的上线流程了,体会有几点:

  • Xcode8.1的自动管理签名还是挺好用的,尚未发现问题。使用该配置后,记得Build Settings中Code Signing Identity的子选项都要配置为iOS Developer。

  • 发现Certificate中添加了专门用于生成服务器推送证书的功能。(估计早就更新了,之前没在意)

  • 新的itunes connect功能真的挺好用,相较原来的版本慢慢的幸福感。

  • 慨叹下目前Apple的审核速度,真实快啊,上传到上架one day。

可利用的资源

watchOS官方资源(包括Human Interface Guidelines、App Programming Guide for watchOS 等)

swift官方资源

Raywenderlich

猫神相关文章(虽然是watchOS 2的,但是很受用)

图形素材: dribbble(寻找创意)easyicon(图标)MakeAppIcon(iPhone App图标与watch App图标生成)

小结

Focus会持续更新,目前主要解决了我自己的一些痛点,希望她也能够帮助到你。如果有什么好的建议欢迎留言讨论。Watch中的App种类确实很有限,不像iOS的这么丰富,有好的产品创意也欢迎一起讨论。watchOS 3.0的更新让Apple Watch焕发了新的生机,有了不少新的可能,让我们一起把我们的Apple Watch丰富起来吧^_^。

最后附上50个促销代码,感兴趣的同学可以下载使用。

促销码传送门

原文传送门 : http://alithink.com/2016/11/15/Focus/

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址