[译]iOS应用开发指南

本文翻译至苹果开发者文档:App Programming Guide for iOS

简介

关于iOS应用架构

在iOS系统中的APP需要提供极好的用户体验。不仅仅是APP良好的设计以及用户界面,绝佳的用户体验还包括许多其他因素。用户期待iOS APP能够运行流畅,响应及时,并且期望APP尽可能使用更少的电量。APP需要支持所有最新的iOS设备,并且针对当前设备进行适配。实现以上行为期初看起来会很困难,但是iOS系统会为实现提供帮助。

本文为了使你的应用在iOS设备上运行良好,突出应用的的核心行为。你也许不会实现在本文中提及的每一个特性,但是你需要在你的每个项目中考虑到这些特性。

Note:开发iOS应用,需要一个基于Inter安装了iOS SDK的Mac电脑。iOS SDK可以从这里获取。

概览

当你准备将你的想法转换成APP是,你必须理解发生在系统与你APP之间的交互。

APP需要支持的关键特性

系统会要求APP支持某些特殊资源与配置数据,比如APP图标与通知APP的功能。Xcode为每个新工程提供了一些信息,但是你必须提供资源文件,而且必须在提交你APP之前确保它们的正确性。

相关章节:Expected App Behaviors

APP遵循定义明确执行路径

从用户登录APP直到退出,应用会遵循一个定义良好的执行路径。在APP的生命周期中,APP能够从前台切换到后台执行,能被终止或者重启,也能够暂时性的休眠。每次状态的转换,APP对应的行为也将改变。前台应用几乎能够做任何事情,而后台应用则必须尽可能的少做事情。你需要使你的APP在状态间切换的时候做出相应的行为。

相关章节:The App Life Cycle, Strategies for Handling App State Transitions

APP必须在多线程环境中高效运行

电池对用户来说,跟性能、响应速度以及绝佳的用户体验一样是重要的。使你的APP最小化的使用电池能够保证用户可以一整体运行你的APP而不用再次充电,但是启动和准备好快速运行同样重要。iOS多线程实现在不牺牲用户期待的响应速度以及用户体验的前提下,保证了良好的电池使用寿命。但是,该实现方案需要APP采用系统提供的行为。

相关章节:Background Execution, Strategies for Handling App State Transitions

APP间的交互

出于安全考虑,iOS的APP运行在沙盒内,并且与其他APP的交互也是有限制的。你可以通特定的方式来和系统的其他APP通信。

相关章节:Inter-App Communication

性能优化的重要性

APP的每次执行任务都会损耗电量。APP耗光电量会造成极差的用户体验,这可能会导致用户删除APP而不是充一次电使用好几天。所以,开发者需要清楚的意识到不同的操作的代价,以及充分利用系统提供的节能措施来避免。

相关章节:Performance Tips

APP的预期行为

每个新的Xcode工程在配置后都可以立即在iOS模拟器或者设备上运行。但是简单的可以运行,并不意味着你的APP就已经可以发布在App Store。每个APP需要大量的定制工作来确保提供给用户良好的用户体验。定制的范围从提供APP的icon到如何展示及利用信息等架构级的决定。本章节描述了所有APP都需要处理的行为,这些行为你在计划开发的早期就需要考虑。

提供必须的资源

每个APP都需要提供下面的资源以及元数据,这样才能保证你的APP能在设备上正确的展示。

  • Info.plist 该文件包含了系统与你的APP交互所需要的的元数据。Xcode基于你的工程设置和配置会自动为你创建。可以通过工程的info标签中,查看或者修改该文件的内容。关于该文件中你需要包含的键的更多信息,参考The Information Property List File
  • 声明APP需要的硬件支持 每个APP必须声明APP运行的设备硬件能力的特性。APP Store利用这部分信息来决定用户是否可以在特定的设备上运行你的应用。你可以在工程中info标签项中编辑APP需要的硬件能力。更多信息,参考 Declaring the Required Device Capabilities
  • 一个或多个APP Icon 系统需要你的APP icon在用户设备主屏上显示。同时也许要求APP icon的其他版本,比如用在设置应用中的icon,以及用在搜索结果中的icon。更多信息,参考App Icons
  • 一个或多个APP Launch Images 当你的APP启动时,系统会短暂的展示一张图片,知道你的APP能够展示其用户急么。这个暂时的图片就是你的APP的启动图。启动图能够立即给用户一个及时反馈,表面APP正在启动,并且即将就绪。你至少提供一张启动图,或者提供多张来强调某些特殊的情景。更多信息,参考App Launch (Default) Images

这些资源是每个APP都需要的。默认的Info.plist不包含很多键。大部分附加的键在你的APP包含某些特性是非常重要的。比如,你的APP使用了麦克风,就应该包含NSMicrophoneUsageDescription键,在该键对应的值中告知用户APP将如何使用麦克风。

APP Bundle

Infomation Property List File

声明硬件能力

APP Icon

APP Lunch Images

用户隐私的支持

APP国际化支持

APP 生命周期

APP在你的代码与系统的框架中有复杂的交互。系统框架提供了所有APP运行的基础设施。你提供的代码需要为你的APP界面以及你想要的APP的而定制。为了达到这一点,本文有助于理解关于iOS的基础框架以及如何工作。

iOS框架在实现上依赖于设计模式,比如MVC模式以及代理模式。理解这些模式对成功创建一个APP是相当重要的。同样会对你熟悉Objective-C 2.0及其特性会有所帮助。如果你是新的iOS开发者,读一读[Start Developing iOS Apps(Swift)]13,该文档介绍了iOS APP以及Objective-C 2.0

主函数

每个基于C语言的APP的入口都是main函数,iOS也不例外。不同的是,iOSAPP不需要你自己来书写。Xcode会创建该函数作为你基础工程的一部分。下面展示了该函数的的实例,除去对于某些异常的处理,否则,你不应该修改原main函数的实现。

import <UIKit/UIKit.h>
import "AppDelegate.h"

int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}