iphone开发培训生(精选8篇)
iphone开发培训生 第1篇
Iphone开发培训生
就业越来越难了,学历要求越来越高了,工资水平越来越低了,就连养家糊口都变得越来越艰难了!现实生活就是这样,不要失去你的方向,努力去充实自己,让梦想为你照亮前方的道路!为更好的推广3G应用技术,明阳教育创办了国内最专业的、西南第一家IOS开发人才培养及实训基地。明阳教育IOS教育团队全部由拥有多年iOS开发和教学经验的人员组成,全部采用苹果一体机实机和项目实训课件教学,不断打造IOS应用开发的精品课程。
成都明阳IOS工程师培养九大优势:
1、采用原版教材,外教授课,助教解答的方式,提高学员中英文双语应用能力;
2、采用原装APPLE产品作为教学工具,辅助学员强化实战能力;
3、采用小班教学,为学员深入细致学习提供良好环境;
4、针对不同的课程设计,采用讲授、练习、面谈、案例、沙龙、拓展等多种教学方式,提高学员综合运用能力;
5、针对学员个体差异,采用从基础技能、专业技能到实战项目开发的培训流程,适合零基础和基础较好的学员双向互补;
6、针对课程需要,采用学习心得报告、案例分析、口试、笔试及实务操作的考核方式,促进学员不断提升学习能力,掌握良好学习方法;
7、针对企业需求研发真实项目进行练习,让学员接触企业级开发,并为学员终身提供免费技术支持,免费工作机会和免费项目实践机会;
8、培养具有较强IOS开发理论知识和实务操作能力的复合型人才;全方位提升学员的综合素质与能力,为学员微创业打造良好基础;
9、国家工信部CSIP办公室唯一授权的全国3G技术人才培养机构;学员可直接参加“国家信息技术紧缺人才培养工程”的认证考试,并获得国家工信部颁发的“3G智能手机开发工程师”证书。
目标:为了能够在短时间之内培养出优秀的移动应用开发设计师,明阳教育结合项目经验、企业需求、职场要求,带领学生完成完整的项目案例。通过在明阳教育的系统学习,让学员对IOS产品的策划、设计、开发、发布有丰富的经验和深刻的理解,最终能独立完成相关环节,并能够参与到大型IPhone App的产品研发各个相关环节中,使一个非IOS开发人员成功学习并掌IOS开发的全套流程和项目协作能力,而且在各方面均具备较强职业素质,完全满足企业对人才的需求。
针对人群:针对有理想并愿意为自己的理想付出努力的社会群体。
课程要求: 有无开发经验均可
QQ群:173889542
联系电话:028-83208866/83207115
网站:
地址:成都市成华区一环路东一段159号(电子科技大学沙河校区)电子信息产业大厦6楼603
iphone开发培训生 第2篇
一个定义为 volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
下面是volatile变量的几个例子:
并行设备的硬件寄存器(如:状态寄存器)
一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
多线程应用中被几个任务共享的变量
12.一个参数既可以是const还可以是volatile吗?解释为什么。一个指针可以是volatile 吗?解释为什么。
下面是答案:
一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
13.为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern “C”
{
#endif
/*...*/
#ifdef__cplusplus
}
#endif
#endif /* __INCvxWorksh */
显然,头文件中的编译宏 “#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。
14.#import 跟#include的区别,@class呢?
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
而#import比起#include的好处就是不会引起交叉编译
15.MVC 模式的理解
MVC设计模式考虑三种对象:模型对象、视图对象和控制器对象。
模型对象代表特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。
视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。
控制器对象是应用程序的视图对象和模型对象之间的协调者。
16. 线程与进程的区别和联系?
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
17.列举几种进程的同步机制,并比较其优缺点。
答案:原子操作;信号量机制;自旋锁;管程;会合;分布式系统 ?
18.进程之间通信的途径
答案:共享存储系统消息传递系统管道,以文件系统为基础 ?
19.进程死锁的原因
答案:资源竞争及进程推进顺序非法 ?
20.死锁的4个必要条件
答案:互斥;请求保持;不可剥夺;环路 ?
21.死锁的处理
答案:鸵鸟策略;预防策略;避免策略;检测与解除死锁
22.堆和栈的区别
管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。
申请大小: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示 overflow。因此,能从栈获得的空间较小。?堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块从栈中间弹出。
分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由 alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器进行释放,无需我们手工实现。
分配效率:栈是机器系统提 供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C 函数库提供的,它的机制是很复杂的。
23.什么是键-值,键路径是什么
模型的性质是通过一个简单的键(通常是个字符串)来指定的。视图和控制器通过键 来查找相应的属性值。在一个给定的实体中,同一个属性的所有值具有相同的数据类型。键-值编码技术用于进行这样的查找―它是一种间接访问对象属性的机制。
键路径是一个由用点作分隔符的键组成的字符串,用于指定一个连接在一起的对象性 质序列。第一个键的性质是由先前的性质决定的,接下来每个键的值也是相对于其前面的性质。键路径使您可以以独立于模型?实现的方式指定相关对象的性质。通过键路径,您可以指定对象图中的一个任意深度的路径,使其指向相关对象的特定属性。
For example, the key path address.streetwouldget the value of the address property from the receiving
object, and then determine the streetproperty relative to the address object.
24.c和obj-c 如何混用
1)obj-c的编译器处理 后缀为m的文件时,可以识别obj-c和c的代码, 处理mm文件可以识别obj-c,c,c 代码,但cpp文件必须只能用c/c 代码,而且cpp文件include的头文件中,也不能出现obj- c的代码,因为cpp只是cpp?
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题?
3)在cpp中混用obj- c其实就是使用obj-c编写的模块是我们想要的。?
如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。?如果模块以函数实现,那么头文件要按 c的格式声明函数,实现文件中,c 函数内部可以用obj-c,但后缀还是mm或m。
总结:只要cpp文件和cppinclude的文件中不包含obj-c的东西就可以用了,cpp混用obj-c的关键是使用接口,而不能直接使用实现代码,实际上cpp混用的是 obj-c编译后的o文件,这个东西其实是无差别的,所以可以用。obj-c的编译器支持cpp.
25.目标-动作机制
目标是动作消息的接收者。一个控件,或者更为常见的是它的单元,以插座变量(参 见“插座变量”部分)的形式保有其动作消息的目标。
动作是控件发送给目标的消息,或者从目标的角度看,它是目标为了响应动作而实现的方法。
iphone开发培训生 第3篇
关键词:iphone平台,GPS系统,全球定位
1 概述
随着城市化的进展和家用轿车的普及, 原本很遥远的全球卫星定位系统 (Global Position System) 的使用越来越多, 但车辆导航仪高昂的价格和每次地图数据库升级所需的费用, 导致车载GPS导航产品仍旧没有非常普及。而且适用于在个人徒步行走的GPS实时导航产品还非常少。
如今, 配备GPS功能的移动设备越来越普遍了, 使用GPS定位系统, 可以精确地定位当前所在的地理位置, 但由于GPS接收机需要对准天空才能工作, 因此在室内环境基本无用。
另一个找到自己所在位置的有效方法是使用手机基站, 手机开机时, 它会与周围的基站保持联系, 如果你知道这些基站的身份, 就可以使用各种数据库 (包含基站的身份和它们的确切地理位置) 计算出手机的物理位置。基站不需要卫星, 和GPS不同, 它对室内环境一样管用。但它没有GPS那样精确 , 它的精度取决于基站的密度, 它在基站密集型区域的准确度最高, 如图1, 图2所示。
提示: 第一代iPhone并没有配置GPS接收器, 基站方式不能应用到iPod Touch上, 因为它不是手机。
第三种方法是依赖Wi-Fi, 使用这种方法时, 设备连接到Wi-Fi网络, 通过检查服务提供商的数据确定位置, 它既不依赖卫星, 也不依赖基站, 因此这个方法对于可以连接到Wi-Fi网络的区域有效 , 但它的精确度也是这3个方法中最差的。
在iPhone上, 苹果提供了定位框架内核, 以帮助你确定你的物理位置, 这个框架的美妙之处在于它使用了前面提到的所有3种方法, 具体使用的是哪种方法对于开发者来说是透明的, 开发人员只需要指定所需要的精度, 定位内核将会以最佳方式确定定位结果。
其余部分将向你展示这是如何做到的。
2 体系结构
2.1 iPhone SDK 架构
iPhone SDK是苹果公司提供的iPhone开发工具包 , 包括了界面开发工具、集成开发工具、框架工具、 编译器、分析工具、开发样本和一个模拟器。 你可以在苹果网站下载。苹果目前只提供网上的iPhone SDK培训。但一些第三方机构如 : CompTIA认证培训中心提供了专门的面授培训, 如图3所示。
(1) Core OS
是用FreeBSD和Mach所改写的Darwin, 是开源、 符合POSIX标准的一个Unix核心。这一层包含或者说是提供了整 个iPhone OS的一些基础功能, 比如: 硬件驱动、内存管理、程序 管理、线 程管理 (POSIX) 、文件系 统、网络 (BSD Socket), 以及标准输入输出等等 , 所有这些功能都会通过C语言的API来提供。另外, 值得一提的是, 这一层最具有Unix色彩, 如果你需要把Unix上所开发的程序移植到iPhone上, 多半都会使用到Core OS的API。
(2) Core Services
Core Services在Core OS基础上提供了更为丰富的功能 , 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation, 就是因为它提供了一系列处理字串、排列、组合、 日历、时间等等的基本功能。Foundation是属于Objective -C的API, Core Fundation是属于C的API。另外Core servieces还提供了 其他的功 能 , 比如 : Security, Core Location, SQLite, 和Address Book. 其中Security是用来处理认证, 密码管理, 按安全性管理的; Core Location是用来处理GPS定位的; SQLLite是轻量级的数据库, 而AddressBook则用来处理电话簿资料的。
(3) Media
如同其名, Media层提供了图片、音乐、影片等多媒体功能。 图像分为2D图像和3D图像, 前者由Quartz2D来支持, 后者则是用OpenglES。与音乐对应的 模组是Core Audio和OpenAL, Media Player实现了影片的播放 , 而最后还提供了Core Animation来对强大动画的支持。
(4) Cocoa Touch
最上面一层是Cocoa Touch, 它是Objective-C的API, 其中最核心的部分是UIKit.Framework, 应用程序界面上的各种组件, 全是由它来提供呈现的, 除此之外, 它还负责处理屏幕上的多点触摸事件、文字的输出、图片、 网页的显示、相机或文件的存取, 以及加速感应的部分等。
2.2 开发环境
操作系统: Mac OS Mountain Lion操作系统
IDE: Xcode 4.5
开发包: iPhone SDK
模拟机: iPhone 4及以上版本或Ipad 2及以上版本
3 需求分析
3.1 GPS 导航应用系统设计规划
本设计的实现思路是在iPhone智能手机上开发一个GPS应用程序, 运行该程序后, 在其主界面上可以创建一个新的跟踪, 然辰在后台启动一个Service, 定时读取GPS数据获得用户目前所在的位置信息, 将其存入数据库中, 用户可以选择以往的跟踪记录, 将其轨迹显示在此, 由此可以记录用户去过的位置。
基于上面的思路, 基于iPhone的GPS导航应用开发的框图如图4所示: 在智能手机的硬件平台上 , 基于iphone手机操作 系统来开 发GPS导航应用 。可以把 这个GPS应用开发分为如下步骤:(1) 规划应用UI。 (2) 设计储存, 创建数据库、表。(3) 实现页面Active的跳转。 (4) 实现服务Service。 (5) 完善和实现程序。 (6) 程序打包、签名并发布。
3.2 性能需求
( 1) 由于项目调用IOS GPS功能 , 所以需要在必须在iphone开启GPS开关后可以使用。
(2) 项目GPS定位的精度受真实环境的影响较大 , 如果在室内误差会非常大, 因此在同一地点所取得的GPS经纬度可能不一样, 这也是正常的。
(3) 由于项目调用IOS GPS API, 所以在项目配置文件里必须写入调用GPS的参数, 否则项目无法正常运行。
3.3 可靠性与可用性
本项目在iPhone 4、iPhone 5、iPad 2、ipad min上测试可以正常运行, 因此在大部分苹果真实手机及平板电脑上均可运行。
4 系统实现
4.1 获取位置坐标
使用Xcode, 创建一个新的基于视图的应用程序项目, 取名为LBS, 在新项目中, 双击LBSViewController.xib文件, 在界面设计工具中编辑它。使用下面的组件填充视图窗口, 如图5所示。
图5位置视图实例: 用Label和TextFiled填充这个窗口。
在Xcode中框架组上点击右键, 选择“添加” * “现有框架”, 选择“Framework/CoreLocation.framework”, 向LBSViewCon troller.h文件中添加以下粗体字显示的代码:
若要使用CLLocationManager类, 需要在视图控制器类中实现CLLocationManagerDelegate协议, 还需要创建3个出口用于连接视图窗口中的3个TextFiled视图。
回到界面编辑器, 单击并拖动文档的所有者项目到3个TextField视图 , 然后分别选择latitudeTextField, longitudeText Field和accuracyTextField。
在LBSViewController.m文件中查询以下代码中的粗体部分:
前面的代码创建了CLLocationManager类的一个实例, 在使用对象之前, 应该检查用户是否开启了设备的定位服务, 如果开启了, 可以使用desiredAccuracy属性指定想要的精度, 使用下面的常量指定想要的精度:
(1) kCLLocationAccuracyBest
(2) kCLLocationAccuracyNearestTenMeters
(3) kCLLocationAccuracyHundredMeters
(4) kCLLocationAccuracyKilometer
(5) kCLLocationAccuracyThreeKilometers
distanceFilter属性让指定设备必须移动多少距离位置信息才会更新, 这个属性的单位是米。如果想得到所有移动的通知 , 可以使用kCLDistanceFilterNone常量 , 最后 , 使用startUpdatingLocation方法启动位置管理器。
要获得位置信息, 需处理下面两个事件:
(1) locationManager:didUpdateToLocation:fromLocation
(2) locationManager:didFailWithError
当获得一 个新的定 位值时 , 设备触发locationManager: didUpdateToLocation:fromLocation:事件, 如果位置管理器不能确定位置信息, 就会触发locationManager:didFailWithError:事件。
当设备可以确定位置时, 想显示经纬度值和精度, 这时可以使用CLLocation对象, 它的horizontalAccuracy属性可以指定精度范围, 单位是米。
按Command-r在iPhone模拟器上测试该程序, 图6显示了模拟器显示的位置经纬度值, 同时显示了精度。
图6定位测试: 当在iPhone模拟器上测试该示例程序时, 总会显示这些固定的值。
4.2 显示地图
如果能将位置坐标定位到地图上显示将会更有趣, 幸运的是, iPhone 3.0 SDK包括了Map Kit API, 它可以在程序中显示Google Map, 下面以一个例子进行说明。
还是使用前面创建的项目, 在LBSViewController.xib文件中视图窗口上增加一个按钮, 如图7所示。
在Xcode中框架组 上点击右 键 , 增加一个 新的框架MapKit.framework。在LBSViewController.h文件中添加下列代码中的粗体部分:
回到界面编辑器, 拖动按钮到文件的所有者项目上, 然后选择btnViewMap:。
在LBSViewController.m文件中, 添加下列代码中的粗体部分:
代码解释:
(1) 当视图载入时创建一个MKMapView类的实例 , 设置显示的地图类型。
(2) 当用户点击View Map按钮时 , 在当前视图上增加mapView对象。
( 3) 当位置信 息得到更 新时 , 使用mapView对象的setRegion:方法放大地图。
在iPhone模拟器中按Command-r测试该程序, 点击View Map按钮将会显示一个包含位置管理器返回位置的地图。如图8所示。
因为模拟器始终显示的是相同的位置, 如果有一部iPhone手机也可以真实地感受一下, 当移动位置时, 会看到地图会自动更新。将distanceFilter属性设置得小一点, 这样可以增强跟踪体验。
iPhone SDK的定位内核框架可以很容易实现基于位置的设备, 此外, MapKit (包括在iPhone SDK中) 可以在地图上显示位置信息。
5 结语
iphone开发培训生 第4篇
“到了今年2月我们发现,在App Store上最受关注的还是游戏类的软件,于是我们将小组扩大成为维度工作室,以开发游戏类软件为核心。”同众科技CEO史卫星说。
不过据史卫星介绍,尽管目前我国基于iPhone进行开发的开发者众多,但是进行产品销售以至盈利的企业非常少,目前真正能向App Store软件商店提供产品的公司和团体大概只有100~200家。
究其原因,史卫星指出,由于目前iPhone还没有进入中国市场,因此国内开发者的产品开发多是瞄准海外市场,这就产生了相应的问题: 1、产品研发囿于语言和文化的差异,海外市场接受起来有难度; 2、中国开发者很难找到创新点。而随着在产品的定位、稳定性和质量上具有更高话语权的EA等大型游戏开发公司参与进来,缺乏一定规模的开发者将很难获得成功。
史卫星表示,由于目前开发一款App Store商店的应用软件的成本大约是8万~10万元,因此国内针对App Store的开发更应由专业团队来承担,以降低成本风险。维度工作室的成立时间虽然不长,但是已经发布了两款游戏产品。其中黄金矿工(Golden Miner)游戏,在App Store美国区收费软件下载次数排名已经名列第64位,收益更是排到了第20位, 并一直在中国服务器占据付费及免费榜榜首位置; 同时,同众科技开发的另一款应用于iphone上的阅读软件——掌讯书苑也在中国区排名第二。
iPhone软件开发面试题 第5篇
答:autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。对于每一个Runloop,系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object(就是autorelease的对象)会被release。那什么是一个Runloop呢?一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。
42.这段代码有什么问题,如何修改
for (int i = 0; i
{
NSString *string = @”Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString:@“xyz”];
NSLog(@“%@”, string);
}
答:会内存泄露,
for(int i = 0; i<1000;i ){
NSAutoreleasePool * pool1 = [[NSAutoreleasePool alloc] init];
NSString *string = @“Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString:@“xyz”];
NSLog(@“%@”,string);
[pool1 drain];
}
43.autorelease和垃圾回收机制(gc)有什么关系?
44.IPhone OS有没有垃圾回收(gc)?
答:没有。
45.什么是Notification?
答:观察者模式,controller向defaultNotificationCenter添加自己的notification,其他类注册这个notification就可以收到通知,这些类可以在收到通知时做自己的操作(多观察者默认随机顺序发通知给观察者们,而且每个观察者都要等当前的某个观察者的操作做完才能轮到他来操作,可以用NotificationQueue的方式安排观察者的反应顺序,也可以在添加观察者中设定反映时间,取消观察需要在viewDidUnload 跟dealloc中都要注销)。参考链接:useyourloaf.com/blog/2010/6/6/delegation-or-notification.html
46.什么时候用delegate,什么时候用Notification?
答:delegate针对one-to-one关系,并且reciever可以返回值给sender,notification 可以针对one-to-one/many/none,reciever无法返回值给sender.所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。
47.什么是KVC和KVO?
答:KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,(1)首先根据方法名找到运行方法的时候所需要的环境参数。(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口。(3)再直接查找得来的具体的方法实现。
KVO(Key-Value-Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实例的类名。
48.Notification和KVO有什么不同?
49.KVO在ObjC中是怎么实现的?
50.ViewController 的 loadView,viewDidLoad, viewDidUnload 分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?
答:viewDidLoad在view 从nib文件初始化时调用,loadView在controller的view为nil时调用。此方法在编程实现view时调用,view 控制器默认会注册memory warning notification,当view controller的任何view 没有用的时候,viewDidUnload会被调用,在这里实现将retain 的view release,如果是retain的IBOutlet view 属性则不要在这里release,IBOutlet会负责release 。
51.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?
iphone开发培训生 第6篇
一、确认开发需求及针对的用户群
需求方需要想清楚到底需要做什么样的一个软件,或者直接将已有的一个网络/移动产品移植到 iPhone平台上。
设计的程序一定要有一个用户群或者满足一些特定用户的需求,那么它一定不会被冷落!
二、软件的开发
下面是开发iPhone软件必要的清单(*标记的项目是必要的)
加入苹果iPhone开发人员计划,需要支付 $99美元获得一年的开发资质 *
需要一部iPhone或iPod Touch*
基于英特尔处理器的Mac电脑(系统需要Mac OS X 10.5.5以上)
签署一份保密协议* 下载并安装最新版本的iPhone SDK开发工具
实际上开发一个iPhone的应用程序,由第三方软件公司来开发是非常方便的。目前国内有很多专门做IPhone外包服务的,找到自己的定位,寻找适合的合作伙伴,会使你的程序更加完美!iPhone程序有时只需要几天的时间就完成了,而客户最终产品的上架销售时间甚至少于一个月。使用第三方外包服务,客户可以节省购置苹果硬件的开销和减少投入学习苹果技术的人力物力。假定按照服务外包的形式开发iPhone的应用程序,一般的流程如下:
1.需求确定
a.客户提供具体需求 b.人机交互和界面初步设计 c.形成产品需求文档 d.客户确认产品需 2.程序开发
a.界面设计和单元测试 b.程序编码 c.整合测试 3.客户验收 a.客户测试 b.出现问题调试 4.程序交付 a.二进制代码 b.源代码
c.单元测试及整合测试用例报告 d.代码报告 e.测试文档 5.售后服务
a.通过培训协助客户发布程序 b.服务器托管及维护
三、将你的应用程序提交苹果商店
就是你如何向苹果商店提交您的申请了,对于不熟悉XCode的人那么将你的程序与iTurns做链接的时候可能会遇到一些麻烦,在这一步我们需要做以下事项:创建您的证书、定义您的苹果应用程序ID、创建您的分布配置简介、编译应用程序、上传到iTunes连接。一般来说,第三方会协助客户发布程序。
四、应用程序的宣传
宣传很重要、应该有自己的宣传方案。
五、持续关注你的应用程序
持续关注你的应用程序,听取用户建议,优化应用程序。以上就是开发以及维护一个iPhone应用程序的全过程,希望给需要的用户提供一些有用的参考。
西安联通电子渠道中心
iphone开发培训生 第7篇
一、CSR文件的生成步骤
第一步,打开钥匙串。具体的做法是从Mac机中应用程序-》实用工具-》钥匙串将其打开。第二步,打开钥匙串菜单中钥匙串访问-》证书助理-》从证书颁发机构请求证书,如图1-1。
图1-1 第三步,按提示填入“个人开发者账号邮箱”,并选择“存储到磁盘”项。并继续则可生成类似*.certSigningRequest 的CSR文件。需要说明每个Mac机有一个特定CSR文件
二、产品证书(Production Certificates)的生成步骤
图2-1 第一步,用自己的个人开发者账号登录iOS Dev Center,并进入右上角目录中一个名叫“Certificates,Identifiers&Profiles”选项。进入后如图2-1。
第二步,选择图2-1左边目录的Certificates->Production选项,单击右上角“+”,进入添加产品证书页面,如图2-2。
图2-2 第三步,选择图2-2中Production下的第一项,并单击Next进入下一页面。
第四步,选择已经生成好的类似*.certSigningRequest的CSR文件。再按提示进入下一步,则创建类似*.cer的证书文件。注:创建证书成功(证书是Distribution类型的,而不是Development类型的)后,可以从网站上将其下载下来,并在Mac机上双击运行,就会添加到钥匙串中的证书中,以便在Xcode中选择证书时使用。
三、创建App IDs的步骤
第一步,选择图2-1左边目录的Identifiers->App IDs选项,单击右上角“+”,进入添加App ID页面,如图3-1。
第二步,按照提示填入“App ID”和“Bundle ID”的名称,并选择“Explicit App ID”选项,并单击continue进入下界面。
图3-1
第三步,在此分两种情况:
第一种情况:在创建App ID之前已经创建好了Certificate(Distribution类型)证书。
->此时会进入 “Confirmation your App ID”页面,确认信息无误后单击“submit”即可成功创建App ID。第二种情况:在创建App ID之前没有创建要相关联的Certificate证书。
->此时会进入创建产品证书的界面,此时只需按照本文第二部分介绍的方法创建Certificate证书即可。创建产品证书成功后,再按提示操作即可创建App ID成功。
四、创建Provisioning Profiles文件的步骤
Provisioning Profiles文件分为Development和Distribution两个类型,此文件关联Certificates和APPID文件,假设名字为BabyStoryReleaseios,创建成功后可以下载并生成*.moblileprovison的Profile文件。
在Mac机上运行*.moblileprovison文件(即Profile文件),则可以把Provisioning Profile文件添加到本机上,以供XCode软件使用,此时在Xcode中Targets-》Build Setting-》CodeSigning中的Provisioning Profile选项中就会出现你在Apple个人开发帐号上创建的名称(如BabyStoryReleaseios)。
关于证书文件的创建,可以参考:http://blog.csdn.net/ysysbaobei/article/details/8838888
五、App发布的流程
(一)在App Store上创建App应用
第一步,登录。输入网址http://developer.apple.com,进入苹果开发页面,单击下方的Resoures中的iOS Dev Center->跳转到https://developer.apple.com/devcenter/ios/index.action。按提示输入个人开发者账号和密码,例如,example@gmail.com。
第二步,在登录成功的页面右侧选择iTunes Connect,如图5-1所示。再次输入开发者帐号和密码,成功进入iTunes Connect页面。
图1-1
图5-1 第三步,选择iTunes Connect页面中的Manage Your Apps,进入App管理页面,如图5-2所示。左上方有一个“Add New App”按钮,下面列出你所有已经创建的应用。
第四步,单击页面中的Add New App,进入创建App的页面,如图5-3(需要AppName,SKU Number,BundleID,App的简介,<1136*640,1024*768,1024*1024,960*640>各种尺寸图片等,按要求填写即可)。
图5-2
图5-3 第五步,把所有信息按要求填写完成后,则应用创建成功。在“Manage Your App”下方会出现你新建的应用,单击应用,可看到此时应用的状态为黄色的“Waiting for upload”。
(二)上传App应用接受审核等待发布
上传App应用,可以使用application Loader和Xcode两种方法。上传成功后的状态为Received Uploaded,稍等几分钟后就会变为Waiting For Review状态,如图5-4所示。
图5-4 如果需要重新上传或替换该版本的App包,则选择图5-4上Details页面中右上角的Binary Details,进入相应页面,如图5-5所示。点击此页面右上角的“Reject This Binary”按钮,按提示进行操作,先删除已上传的App包,再重新上传即可。另外需要注意的是:
在上传应用时必须要保证Xcode中的版本号与你在App Store上创建应用时填写的版本号要一致,如,都设置成1.0.0。
图5-5 ***用Xcode上传App应用详细步骤*** 第一步,用Xcode打开App应用工程。
第二步,设置Targets->General与Project->Info中的设备版本号是相同的,如5.1。
图5-6 第三步,按图5-6所示,找到Targets->Build Setting和Project->Build Setting下的Architectures,把其中的“armv7s”项删除。并且选择Targets-》Code Signing下的Provisoning Profile,这个文件就是你用苹果个人开发者账号创建的Profile(参照本文第四部分),然后把Targets->Code Signing和Project->Code Signing下的Code Signing Identity选择Distribution类型的产品证书,这个文件就是你用个人开发者账号创建的Distribution类型的文件(参照本文第二部分)。
第四步,打开Xcode菜单中Product->Schema->Edit Schema,把类型选择为Release版本的。第五步,打开XCode菜单中Product->Archive,进入包分发页面,如图5-7所示。
图5-7
第六步,单击Distribute...,进入“分发方式页面”,如图5-8。
其中第一项“Submit to the iOS App Store”是把App包上传到App Store。
第二项“”是把App包保存到本地,生成*.ipa格式的分发包。
图5-8
第七步,按提示输入自己的个人开发者账号和密码(通过这个关联认证,使应用上传到App Store的特定账号上),如图5-9所示。
图5-9 最后,按提示进行操作,如无错误提示,则App应用上传成功。
附
生成ipa安装包的步骤与发布App应用的区别在于:
第一,在单击Distribute后选择第二项“Save for Enterprise or Ad Hoc Deployment”。第二,其中一步需要选择Profile文件,如图5-10所示。在这里,如果你选择的证书的Development类型的,即99美元的证书,此时只有在Mac机上添加的Iphone设备才可以安装生成的ipa安装包,如果是其他设置则需要“越狱”。但是你选择Distribution类型的,即企业级的299美元的证书,那么就不会有这样的限制,任何Iphone设置都可以安装这个ipa安装包。
iphone开发培训生 第8篇
[
当当和京东的 iPhone 客户端等均是使用什么技术开发的?
]★ 创业初期如何做公关
★ 创业前夜,写给京东的情书
★ 什么是创业计划书
★ 创业初期创业者应该规划的8条细节
★ 创业初期的小微企业如何做好公关营销
★ 你是我一生在等的人诗歌
★ 发改委等九部门实施新一轮大学生创业引领计划
★ 洋妞们是这样创业的
★ 让英语更易学-―记徐国明等创立的易思英语学习法