开发

iOS 开发初体验 – 上架

想不到上架过程是我遇坑最多的时候,想不到提交一个 App 竟然那么麻烦,而且有还那么多 bug。

注册开发者账号

原来个人开发者的账号名称必须要用真名,也就是身份证上的名字。我注册开发者账号的时候,系统居然默认将我当时注册 Apple ID 时填的名字当作开发者账号名称,并且还不能修改。

我在官网提交反馈,给苹果客服通了电话,然后上传自己的身份证照片,等待苹果去验证,才修改成功。整个过程花了一个白天。

注册 App 名称

原来 App 名称也是唯一的,不能重复。我在新建 App 的时候才知道自己之前定的名称已经被用了。

问题是,苹果不提供 Check Available 的方式,你只能在确定名称后,新建 App 的时候把所有资料填了,提交,才能知道这个名称能不能用。

后来找到一个方法,就是通过 Google 的高级搜索来查找在 iTunes 网站中,是否存在 URL 里带有 XXX 的网页。例如搜索:

site:itunes.apple.com inurl:app facebook libra

隐私条款

所有 App 都需要隐私条款链接。知道这个要求的时候已经凌晨一点了,本来想着提交完就睡觉的我,抱头痛哭。

搜了一下,发现很多人把隐私条款放在简书上。虽然不是很正规,但确实是很方便的做法。

不过我想了一下,发现 GitHub Pages 可能是最合适的方案。成本低,也显得正式一些。

至于隐私条款的内容,网上有很多模版。我找到了一个生成器 App Privacy Policy Generator,输入一些基本信息就能自动生成。不过最后一行会有生成器自己写的推广文案,我残忍地把它删掉了。

提交审核

终于提交成功了。我捡起键盘上几根头发,就去睡觉了。

接下来是一连串的 Are you kidding me?

我觉得自己还算幸运,提交后一天,就收到状态更新说正在审核。然而,几个小时后我的 App 被拒绝了,原因是违反了 2.3.1 条款,说我隐藏了功能,发现我的 App 有赌博相关的功能。

???

然后我回复,诚恳地描述了这个 App 的功能是什么,跟赌博没有任何关系。

一小时后就能收到回复,说重新审核了一下,还是发现我有隐藏了功能,叫我回去改,期待下一次提交。

期待个毛线……我一点都不期待。我查过了,如果因为这个条款重新提交的话,作为惩罚,审核时间会被推延。

关键的问题是,他不告诉我哪里有问题,这不就是让我自我审查吗?敢情因为我是中国人就很懂自我审查?

于是我回复问具体是哪里的问题,还列举了一些可能的原因,并一一解释。一天过去,没有回复。然后我又发了一封。一天后,终于又显示“正在审核”了,十几个小时,终于通过……

这件事情简直摧毁了我对苹果开发体验的好感。回头想了一下,应该是因为我的 App 很小,才几百 Kb,而且我的账号又是新号。所以他们以为我是要发马甲包。所谓马甲包,应该是隐藏了一些功能,然后等到审核通过后,通过一个开关打开隐藏功能。据说很多赌博类的 App 就是这么操作的。

有意思的是,我在搜索怎么解决这个问题的时候,看到很多文章在教大家怎么去隐藏功能不被苹果发现。所以说有些事情上如果你吃了亏,可能只是因为你身边的人占了便宜。

上架了却访问不了

真想不到都上架了还有坑。

App 的状态如果显示为“可供销售”,就意味着已经上架了。然而我却跳转不到那个页面,搜索也没有搜到。按照网上的说法,我改了价格和地区,然后又改回来,过了一个小时,终于可以访问了。

Finally。

我的第一个 App 是跟深呼吸练习有关的,有需要的朋友可以安装来玩玩,真的没有隐藏了赌博功能。附上链接:https://apps.apple.com/cn/app/%E5%91%BC%E5%90%B8%E9%87%8C/id1468461396

呼吸里 Breathin

iOS 开发初体验 – 开始开发

以我对自己的了解,如果不快点做出东西,我很快就会懈怠然后一蹶不振,坐在午后的阳台上悲观地回望过去一个多月的枯燥。

我自学阶段用的教程,引导着我把一个 To-do List 的 App 做出来了。也算是把 iOS 开发里最基础最常用的一些概念过了一遍。如果我能做出一个 To-do List 了,是不是很多不复杂的 App 也能做了呢?

我觉得是,毕竟我有 Google。

我觉得自学一样东西是分两个阶段的。第一个阶段你在学基础概念或者基础操作,这个时候你只能不断地摄入,不断地巩固,踏踏实实地把主流程走一遍。这个阶段结束之后,你大概知道这是怎么一回事了。第二个阶段你可以主动去学习了,因为有了第一阶段的基础,你懂得如何去提问,如何看懂别人的回答。这个时候 Google 就能派上用场了。

简单来讲,“是否懂得通过提问来解决问题”是两个阶段的分水岭。

开发过程中的感悟

感谢 Google,感谢 Stackoverflow。顺便谴责一下 GFW,我觉得 GFW 妨碍了很多人学习编程的道路。

跑起来比最佳实践更重要。优化代码的事情留在后面吧。

不写注释就是给自己挖坑。定期整理一下自己的代码是很有必要的,既方便日后维护,也能巩固自己对逻辑链的记忆。

连 Google 都帮不到自己的时候就老老实实地看官方文档吧。

如果做不到最完美的效果,不妨先放弃。做人不能太执着。

国内的 iOS 开发者还是用 OC 的比较多,想找 Swift 版本的实现方式的时候,中文社区几乎没有资源。

很多程序员在简书写技术博客,以及简书的搜索排名很靠前。

对于某一部分人,写代码真的会掉头发……😢

iOS 开发初体验 – 自学

花了一个多月的时间看完 Raywenderlich 的《iOS Apprentice》前两章,然后花了半个月时间试着开发并上架了一个简单的 App,有一些心得体会分享给自学 iOS 的新人。

1. 教程的选择

MIT 有个 iOS 开发的课程,Stanford CS193P。我在找教程的时候,很多人推荐过,甚至最近在 App Store 的专题故事里,也看到一个年轻的开发者说自己是通过那门课程入门的。毕竟 MIT 出品,课程质量自然不会差。而且我相信学习编程需要老老实实地敲代码,而这个课程会有课后作业。

不过在试着听完一节课之后,我发现信息量超多,第一节课就会讲到 MVC 的概念。难怪看到有人说这门课程并不是特别适合零基础的自学者。所以,如果你还是零基础,需要谨慎选择。

另外,我买了一年的 Design+Code。DC 里面也有 Swift 的教程(所谓 Swift 教程其实就是 iOS 开发教程了)。DC 宣称所有教程都是为设计师而设计的,为设计师的思维量身定做。

但我发现,Swift 教程里很多不复杂的概念,讲师要用设计领域的一些概念用来比喻。这没什么,毕竟很多没接触过编程的设计师很可能真的不懂那些概念。可是教程里经常会出现我(一个会一点编程的设计师)看不懂的代码,而这时候讲师却一句话带过。这种本末倒置实在让我懵逼。

我后来选的是 Raywenderlich 那本小书。看书自学的方式有个好处是可以更自由地控制进度,还能方便回溯。也有明显的缺陷,它没那么直观,而且还枯燥。还好我早已经习惯了这种学习方式(感谢大学里考前一周疯狂看书复习的自己)。

iOS Apprentice》是一本很棒的书,作为一个教程,它做得真的很到位:

  1. 你半天之内就能做出一个能运行的 App
  2. 很清楚新手在操作的时候会遇到哪些问题、犯下哪些常见的错误,于是经常能看到及时的提示
  3. 很清楚新手不理解哪些概念。如果是不复杂的概念,直接就当作教学要点来讲述;如果是复杂的概念,会用浅显的话来解释,然后说现在不是很清楚也没关系,后来会涉及到很多次。例如 Optional 类型的概念,可能前前后后解释了不下 10 次
  4. 版本更新很及时

2. 自学建议

如果你也要用这本书开始学习,以下是我的建议:

  1. 要用最新版,新旧版本的内容很有可能差异很大,无论是 Xcode 版本还是 Swift 版本
  2. 如果你英文不是特别好,第一章可以先看王寒老师的翻译版,他重新演绎了一遍,也加了一些细节,但是内容还是一样的
  3. 从第二章开始,一些操作的跨度比较大,比如要实现一个功能,既需要在 Storyboard 操作,也需要在不同的文件中添加代码。我建议先看完整个操作流程,把关键点记下,再把书“合上”,自己按照笔记实现出来——不记得了的话再回头翻书就行
  4. 一定要坚持。第二章的难度明显比第一章高了,内容也多了两倍,但只要你能坚持下来,你就能跟我一样,有信心开始着手写自己的 App 了
  5. 如果不差钱,支持正版教程吧

另外,小书所在的官网 https://www.raywenderlich.com/ 可以记下来,以后很有可能会用到,因为后来我自己搜索额外教程的时候,发现这个网站的教程质量是最高的,之一。