如何制作一个简单的 iOS app?
如今,不少企业都想拥有属于自己企业或产品的手机APP,但其中最困扰企业主的问题就是:开发一款手机APP到底需要多少钱?
简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。
今天,我们就来详细分析一码颂下这个问题,请继续往下看吧。
一、APP开发款式分为固定款和定制款,两者的价格均不相同
固定款:是指直接套用已有的、现成的APP固定模板,报价是固定的,所需要的功能也是固定的,缺点就是客户拿不到源代码,也不能根据企业需求进行定制,由于源代码是封装的,如果企业以后想进行功能升级或系统维护的话,也不能够实现,只能重新开发一个新的软件。
固定款的APP开发时间短,约2~3日的时间即可完成,费用大约在几千到几万之间。
定制款:定制款是指APP的功能全部重新开发,过程比较繁琐,需要美工、策划吵拦、APP开发(前台/客户端/手机端)、后台程序员等工种协同完成,大型的、功能复杂的APP甚至需要数十人的团队。
由于APP的功能和设计都是定制的,因此价格会高些。定制款的开发时间与开发价格是成正比的,开发时间长,大约在两三个月甚至不定的周期里才能完成,而费用大概在几万甚至十几万左右。
因此,想要知道开发一款手机APP需要花费多少钱,企业主首先必须把APP的详细需求和功能告知APP开发公司,开发公司才能报出一个合理的价格。
二、手机APP平台不同,制作成本也不一样
现在市面上流行的手机APP制作平台主要有两种一般包括两种系统:安卓系统(Android)和苹果系统(IOS)。
一般来说,制作苹果系统迟碰郑的手机APP软件费用要比安卓平台的贵一些,因为苹果公司对苹果平台的封闭性和手机APP开发语言Objective-C的难度,都让APP开发者加大了苹果系统手机APP开发的难度。
三、APP制作成本包含参与人员的工资
通常情况下,开发一款APP需要产品经理、客户端工程师、后端工程师和UI设计师各一名,这已经是制作手机APP应用软件比较精简的配置了,所以这些参与人员的工资也是包含在APP制作成本当中的。这些工作人员的月薪加起来可能都会超过4、5万元。
四、APP开发公司的所在地
需要注意的是,同样实力的APP开发公司,在不同的城市也会导致APP的成本费用高一些
目前的手机系统主要是iOS和Android。
其中iOS使用C、C++、Objective-C和Swift混神稿编,Android使用Java和Kotlin混编。
那么,你要问的肯定是iOS应用了。
iOS的话,首先要有Mac *** 作系统。即使是H5打包iOSApp也是要有Mac *** 作系统的。所以有型之中,iOS开发的前期成本也要高一些。
再说说iOS开发本身,这是不能直接使用C和C++进行游者孝开发的,要使用Objective-C语言和苹果自家Swift语言进行开发,C语言在这里只能起到辅助作用。
可能你也会问,老式功能机。嫌碰那种功能机搭载的系统叫做“嵌入式系统”,这个也是JavaSE所擅长的。
C语言,可以写出Android *** 作系统。但很难拿C语言去些那些手机 *** 作系统的程序。Windows *** 作系统下的.exe文件倒是可以使用C语言来生成,可惜这不是你想了解的、这是PC软件,不是手机软件。
内容:How to start an empty GLKit application for iOS 5本教程穗纯是2D游戏引擎教程的序,但对于任何一个刚步入iOS世界,想用Xcode4开发GLKit相关应用的人,本教伏孝程都有抛针引线的作用。其中大部份内容都是摘取自我的另一篇教程“学习iOS5中GLKit关于OpenGL的基本用法”,那篇教程绘制了一个3D立方体,很值得一读。
用XCode创缺族稿建一个新的iOS应用,模版选择“Empty Application”。取个工程名(我将要编写一个游戏引擎,所以我命名为"ExampleEngine"),保持默认选择(如果是编写一个库,那在类前最好有个前缀,我用的是“EE”),保存。
接着我们添加OpenGL与GLKit相关frameworks。点击左上角的工程,然后选中TARGETS下你的target,再选中Build Phases栏,在“Link Binary With Libraries”中加入GLKit, OpenGLES,QuartzCore这三个framework。完成后,你将会在工程中看到你加入的framework,当然你也可以用拖的方式将其拖入Frameworks分组下。
确保你选择的是模拟器(如果你有开发者帐号,你可以用合法的provisioning profile来真机调试,于是你可以选择device),按⌘B 确保可以正确编译。
在AppDelegate头文件里引入GLKit头文件,这样就可以调用GLKit中的方法。
01.// AppDelegate.h
02.#import <UIKit/UIKit.h>
03.#import <GLKit/GLKit.h>
04....
GLKit了类化了UIView与UIViewController,利用它们将方便我们把OpenGL场景集成到我们的应用中。两个类都是用代理(苹果Objective-C库中一种非常通用的设计模式)的计设模式嵌入到我们的应用代码中。我们要用AppDelegate作为GLKit的代理,因此得告诉编译器AppDelegate会实现代理协议。
01.// AppDelegate.h
02....
03.@interface AppDelegate : UIResponder <UIApplicationDelegate,
04. GLKViewDelegate, GLKViewControllerDelegate>
05....
现在来创建场景。将application:didFinishLaunchingWithOptions:这个方法用下面代码替换:
01.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
02.{
03. EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]
04. [EAGLContext setCurrentContext:context]
05.
06. GLKView *view = [[GLKView alloc] initWithFrame:[[UIScreen mainScreen] bounds] context:context]
07. view.delegate = self
08.
09. GLKViewController *controller = [[GLKViewController alloc] init]
10. controller.delegate = self
11. controller.view = view
12.
13. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
14. self.window.rootViewController = controller
15. [self.window makeKeyAndVisible]
16.
17. return YES
18.}
■第3,4行创建OpenGL绘制时需要的上下文。
■第6,7行设置绘制场景的view。第6行,由OpenGL上下文创建屏幕大小的view。第7行指明view的代理为AppDelegate。这样绘制每一帧的时候就会调用glkview:drawInRect:这个方法。
■第9-11行,创建GLKViewController,并指明其代理类与view。代理方法中我们主要关心 glkViewControllerUpdate:
■第13-15行,将我们的controller与"window"关联,以便显示。
■第17行通知OS我们的应用已启动完成。
现在代理方没还没实现所以有警告提示,但是也可以运行。运行后,你会看到纯色的背景,看一看吧!
现在我们把这些警告去掉交改背景为灰色。在theapplication:didFinishLaunchingWithOptions:方法下面实现如下代理方法:
01.- (void)glkViewControllerUpdate:(GLKViewController *)controller {
02.// NSLog(@"in glkViewControllerUpdate")
03.}
04.
05.- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
06.// NSLog(@"in glkView:drawInRect:")
07. glClearColor(0.5, 0.5, 0.5, 0.5)
08. glClear(GL_COLOR_BUFFER_BIT)
09.}
现在再运行,你会看到灰色背景,由gl开头的API实现的。在OpenGL与GLKit中,颜色由四个分量组成,分别是红,绿,蓝与alpha(透明度),每一个分量取值范围是[0,1]。
如果你打开上面代码中的NSLog注释,你会在控制台看到如下打印。
这儿有两个方法,因为GLKit基于state与presentation的(类似于MVC的设计模式或HTML/CSS分开发设计)。State(动画,物理模拟,游戏逻辑)应在glkViewControllerUpdate:这回调中,而glkView:drawInRect应用来绘制场景的。
申明:本系列教程原稿来自网络,翻译目的仅供学习与参看,请匆用于商业目的,如果产生商业等纠纷均与翻译人、该译稿发表人无关。转载务必保留此申明。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)