App Programming Guide for iOS - Expected App Behaviors
这一篇主要是总结自己在看 App Programming Guide for iOS 的一些收获。大部分内容都是来自 App Programming Guide for iOS。
Xcode 创建的新项目能直接运行在真机和模拟器上,但是你需要做一些自定义才能提交到 App Store 和给用户提供好的体验。
Providing the Required Resources
- An Information property-list file:这个就是项目中的 info.plist 文件,这个文件中涉及了一些系统与你的 App 交互需要的信息。你可以直接编辑这个文件,也可以在你的项目 Info 选项页中进行编辑。
- A declaration of app‘s required capabilities:每个应用都需要表明你的应用的运行环境。App Store 会根据这些信息来决定你的应用是否可以运行在用户的设备上。你可以在项目 Info 选项页的 Required device capabilities 入口来编辑。
- One or more icons
- One or more launch images
The App Bundle
当你编译 iOS App 的时候,Xcode 会将其打包成一个 bundle。一个典型的 App Bundle 包含以下内容:
File | Example | Description |
---|---|---|
App 可执行文件 | MyApp | 可执行文件包含你的编译代码,可执行文件的名称跟你的 App 除去扩展名一样 |
The information property list file | Info.plist | Info.plist 文件中包含 App 的配置信息,涉及了一些系统与你的 App 交互需要的信息。这个文件必须叫 Info.plist |
Storyboard files (or nib files) | MainBoard.storyboard | SB 包含需要展示的视图和控制器 |
Ad hoc distribution icon | iTunesArtwork | ???暂时不清楚 |
Settings bundle | Settings.bundle | 如果你想在系统 Settings app 展示自定义的页面,你就需要包含这个 Setting bundle,这个 bundle 包含 property list 和其他资源来自定义你的 setting 界面。 Preferences and Settings Programming Guide. |
The Information Property List File
Xcode 会使用 General/Capabilities/Info 选项页的信息在编译期来生成 Info.plist 文件。这个文件被 App Store 和 iOS 系统使用来决定应用的运行环境和定位主要资源。
对于一些比较基本的选项,你可以在 General/Capabilities/Info 选项页来配置。如果 Xcode 没有提供图形化界面,你就需要在 Xcode property list 的编辑器提供正确的键值对。
- Declare your app’s required capabilities in the Info tab:这个表明你的应用的最低运行系统,App Store 会用这个来避免比较低的系统来下载你的应用。
- Apps that require a persistent Wi-Fi connection must declare that fact:这个对应 Info.plist 文件中的 UIRequiresPersistentWiFi 键,设置这个键对应的值为 YES 来避免 iOS 系统关闭活跃的 Wi-Fi 连接。所有使用网络的应用都推荐添加这个键。
- Newsstand apps must declare themselves as such:在 Info.plist 文件中添加 UINewsstandApp 键来表明你的应用是在 Newsstand 应用中展示内容的。For more see iOS 杂志类应用开发 - NewsstandKit.
- Apps that define custom document types must declare those types:使用 Info 选项页的 Document Types 的选项来定义应用支持的文件的 UTI 和 icon。iOS 系统会使用这些信息决定你的应用是否能够处理特定的文件类型。For more see UIActivityViewController Tutorial: Sharing Data.
- Apps can declare any custom URL schemes they support:在 Info 选项页的 URL Types 选项来定义应用能处理的 URL Schemes。For more see Using URL Schemes to Communicate with Apps.
- Apps must provide purpose strings (sometimes called “usage descriptions”) for accessing user data and certain app features:当访问用户的隐私数据(位置、通讯录等等)时,你需要向用户申请权限。这样你就需要在 Info.plist 文件中描述你需要访问隐私数据的原因。如果你的应用在申请权限的时候没有提供对应的原因,App 会直接闪退。
Declaring the Required Device Capabilities
每个应用都需要表明最低支持的 iOS 操作系统。你可以在 Info.plist 文件中添加 UIRequiredDeviceCapabilities 键来表明应用额外的要求,这个键对应的值是字典/数组。
App Icons
Xcode 在创建新项目的时候,会自动为应用的图标创建一个 image asset,Xcode 会在编译期在 Info.plist 文件添加相应的键值对。
App Launch (Default) Images
系统启动应用的时候会先显示启动图片,当你的应用准备好系统会移除启动图片。当应用从后台回到前台,如果你应用的 UI 截图可用,系统会使用你的截图。同样 Xcode 在创建新项目的时候,会自动为应用的启动图片创建一个 image asset,Xcode 会在编译期在 Info.plist 文件添加相应的键值对。
Supporting User Privacy
只有经过用户的同意应用才能访问用户的隐私数据。iOS 系统会保护 位置/联系人/日历事件/提醒事项/照片等等。你需要在 Info.plist 文件中提供访问隐私数据的原因,当你获取权限的时候,填写的原因会展示给用户看。在 iOS 10 之后你必须要在 Info.plist 文件中添加访问隐私数据的原因。
For more see Expected App Behaviors Table 1-2.
Internationalizing Your App
为了国际化你的应用,你需要提供下列国际化的文件:
- Storyboard files
- Strings files
- Image files
- Video and audio files