又标题党了。如@洪亮狗豆所说,It’s a show business。
其实标题说的是事实,展开介绍一下:
- 基于Appstore发行产品,以iPhone产品为主,全球市场,都是应用,没有游戏
- 2个人,一个工程师,一个设计师
- 30几个客户端(免费+收费)
- 从一起工作的第一天到现在,正好18个月
- 800万下载安装
- 3个产品拿过免费总榜第一(十个左右不同国家的商店)
- 成本 < 40, 000,利润 > 2, 000, 000。单位RMB
- 免费+IAP+广告
- 0推广,试图做过一些推广,没任何效果
- 没刷过榜
做的产品很不起眼,也没有拿到任何投资。之前两个人都是在一家iPhone游戏公司任职,算是摸着石头过河吧。本来很多东西想说,想想还是不要贻笑大方了。独立开发者比我们做得好的大有人在,跟一些团队更是比不了。
说起来,这是我做过的第二个不赔钱的生意。幼儿园时候赊账,后来发现要还。小学一年级上课时1毛钱1根卖红肠,赔大了。小学5年级炒过邮票,没赚多少,赚的钱都买煎饼果子了。高中毕业后搞过家教中介,赚了点零花钱和学费。总之都挺有意思:)
刚刚过完了27周岁生日,越来越奔三了:) 这18个月,我结了婚,而且马上就要迎接一个新生命了。明年和今年肯定不一样,谁知道呢?这样才好玩。
最后感谢家人(尤其是老婆)和Jobs。不啰嗦了,陪老婆去散步。
附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog。
从Xcode 4.4开始,默认的编译器为LLVM 4.0(Xcode 4.5 GM版本的默认编译器是LLVM 4.1)。LLVM 4.0+提供了Auto Syethesize
功能,只需要声明property,在编译期由LLVM自动添加@synthesize,生成等效的代码。
Less code, less bug
。懒惰一点没有坏处。那么如何利用这一特性呢?
- 检查你的Xcode版本为4.4+(Xcode->About Xcode)
- 检查你的编译器版本为LLVM 4.0+(Build Options->Compiler for C/C++/Objective-C)
- 删除所有的@synethesize声明标识,重新build
有的开发者可能像我一样会遇到编译错误Use of undeclared identifier ivar, did you mean _ivar?
。这是因为若LLVM 4.0之前的编译器,很多人没有使用形如@synthesize ivar=_ivar
的命名习惯。LLVM 4.0+默认生成的ivar的形式是_ivar
,即默认生成@synthesize ivar=_ivar
。
解决办法:Cmd+'
,之后’Enter’使用Quick Fix。
附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog。
昨天安装了Xcode 4.5 Golden Master版本,也见到了4.0寸的iPhone 5模拟器。开发者需要做什么才可以保证旧的应用可以运行在iPhone 5上呢?
必须要做的事情
你需要一个名为Default-568h@2x.png的启动画面,568h表示568个点的高度。你不需要无@2x后缀的png文件,因为iPhone 5是DPI 326的Retina屏幕。
什么也不做
如果什么也不做,iPhone 5多出来的88个点的高度,会被均分2份。屏幕的上下是黑边,中间是应用。有传言说上下两部分可能被苹果放广告条,不过我不信。
如果只打算支持iOS 6
你可以省去很多麻烦,但会失去很多用户。我建议开发者朋友们至少在明年4月左右再考虑以iOS 6作为基准。如果面向的是中国区用户,那么这个时间还得往后推迟。
你可以利用iOS 6新增了一个特性:Auto Layout。你不需要硬编码,只需要指定相对位置。而且Auto Layout在Interface Builder里也有完整的支持。
兼容iOS 4.3+的设备
Xcode 4.5 GM版本的最低Deploy Target是4.3,以前的设备不需要考虑了。如果应用使用的是UITabBar/UINavigationBar这些标准控件,那么只需要指定view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
即可(也可以在Interface Builder里面设置)。利用这个resizing mask,可以使内容自动向两边和上下填充。
我没有使用标准控件
我一样要面对这个问题。我没有想出好办法,目前只是在viewDidLoad里面,在运行时覆盖掉xib文件的坐标设置。我建议你使用[[UIScreen mainScreen] bounds],利用一个方法返回frame的height,并把它封装在一个singleton中。接着Find/Replace掉所有的硬编码的480(记得Preview)。
需要面对的更多问题
不管使用哪一种方法,我相信这做起来不容易。为了达到更好的体验,很多应用定制了一些控件。赶快与你的设计师沟通,确定哪些UI资源是需要改的。我建议由工程师来引导并推动这个事情。(如果你是个今天就可以推动这件事情进展的设计师,请与我联系,很高兴认识你。)
游戏怎么办
游戏的问题可能更复杂,这取决于你的产品。我最近没有制作游戏,但我根据订阅的RSS Feed获得的信息,cocos2d-iPhone,cocos2d-x都已经发布了最新的develop-branch来解决这个问题。建议第一时间去相关的社区获得信息,作出应对。
拥抱变化
软件开发唯一的不变就是变化。每次变化是让你的产品脱颖而出的相会,也是暴露团队问题的机会。不管你需要维护多少产品,如果在15-30天内还搞不定这些事情,你可能更要担心的是工作流程、沟通方式和团队寿命。
呼吁开发者不要利用那88 points放广告条,对用户和自己好点。
附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog。
我是在图灵买的19.99的电子版,这本书是看后即扔的类型。不是因为写得不好,而是写得太好,不需要再回头看了。这本书的思路有些Head First系列的味道,我很喜欢。分章节介绍一下吧。
第一章:Node.js简介
javascript算是我系统学过的第10门语言。因此我对一项技术,往往更关心它的来龙去脉。每隔两、三年,就会产生几门语言,被吹嘘成the next big thing,结果都不了了之。我建议读者一定要好好看看这章,学习一项技术是要投入很多时间和精力的。
第二章:安装和配置
中规中矩,这种章节没法出彩。
第三章:Node.js快速入门
最关键的一章,讲得很容易懂。其中“异步式 I/O 与事件式编程”、“模块和包”、“调试”这三小节,一定要理解概念。
第四章:Node.js核心模块
这一章介绍得不够丰满,希望作者在再版的时候可以增加一些核心模块的介绍。
第五章:使用Node.js进行Web开发
最让人头疼的一章,样例代码使用的express.js 2.x,初学者很难把样例代码跑起来。但绝对不能归咎于作者。Node.js是一个快速演进生态。其中最流行的web框架express.js在3.x版本的变化比较大。建议读者参考meteoric_cry的这篇文章
第六章:Node.js进阶话题
其中模块加载机制,讲得很清楚。Node.js部署这一小节所介绍的方法可行,但未必符合所有人的生产环境需要,但也值得一读。
附录
Javascript高级特性和Node.js编程规范,是重要的参考,不能错过。
我的技术背景:
- 擅长iOS应用和游戏开发
- 常用python, bash写一些脚本
- 懂一些Java, .NET, 原来做过一些企业应用开发
- 熟悉C/C++但不常用
- web前端知识较少,但了解基本概念
最后附上经过修改过的兼容express.js 3.x的书中样例代码。
附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog。