iOS配置信息

2021-05-08  本文已影响0人  夜雨聲煩_

Project 和 Targets

project

project是所有文件、资源、信息/配置的repository。一个project包含所有build your products所需的内容并且维护他们之间关系。它可以包含多个targets。一个project为所有的target定义默认的build setting(每一个target可以自定义它们的build setting,这些自定义的setting会覆盖project默认的build setting,这个在后面会讲到)。

target

简单地说,target定义了project的编译设置,确定了project中各种资源和代码的编译顺序。每个target都唯一依赖于一个project,但是一个project中可以有多个targets,上图所示的target就有2个(KLBaiSi、KLBaiSiTest),每一个的设置不同,但是同一时间里只有一个active Target,在编译时我们可以选择用哪一个target进行编译,具体操作选择如下图所示。

关系

一个Target和它的product可以和其他Target联系,如果一个target build需要另一个target的“输出”,可以说成第一个target依赖第二个。如果这俩个target在同一个workspace,Xcode会发现他们的依赖关系,从而build the products按照特定的顺序。这样的关系被称为“ implicit dependency.” 你也可以为俩个targets指定明确的target 依赖关系在build setting里面。例如,你可能build一个library和一个链接这个library的application(同一个workspace)。Xcode可以发现这种关系并且自动build这个library first。然而,你如果要去链接library的某个版本而不是one built in the workspace,你可以在build settings里创建一个确定的依赖关系,它将会覆盖implicit dependency。

Signing & Capabilities

Background Modes

iOS 后台运行的五种状态。

Background Modes 即苹果为长时间在后台停留执行的方式

官方文档.png

需要方开启,App Store审核人员会检查应用中是否有必要开启该模式,如果没有必要却选择了开启,可能会被拒。

Audio, AirPlay and Picture in Picture

此个选项包含四种场景,分别是:音频的播放,录音,AirPlay 及画中画的视频播放。

Location updates

一般用于导航应用中,开启此选项后,应用退到后台,还可以得到系统的定位更新,从而使得应用可以根据定位的变化做出不同的反应。
代码实现可参考:https://github.com/W-King/Location

Voice over IP

VOIP 类的应用允许用户使用网络而不是手机打电话,因此这一类的应用需要保持同它相关的服务的网络连接,用以收到来电事件和其他数据。iOS 不是通过一直让该应用处于激活状态来达到这个目的,而是同样也会将这类的应用挂起,但同时会在应用被挂起期间由系统接管它的 VOIP 的 Socket,当这个 Socket 有数据通信时,系统会再次唤醒处于挂起状态的应用,同时将 Socket 的控制权交还给该应用,以让其正常的处理来电事件和其他数据。

External Accessory communication

此选项提供给一些 MFi 外设通过蓝牙,或者 Lightning 接头等方式与 iOS 设备连接,从而可在外设发送消息时,唤醒已经被挂起的应用。而一旦被唤醒,一般情况下, 应用只有最多 10 秒钟的执行时间。MFi 外设:是指通过苹果 MFi 认证的设备,而 MFi 认证是对其授权配件厂商生产的外置配件的一种标识使用许可,是 Made for iOS 的英文缩写。

Uses Bluetooth LE accessories

此选项与 External Accessory communication 类似,只是此选项无需限制 MFi 外设,而需要的是 Bluetooth LE 设备

Acts as a Bluetooth LE accessory

此选项是指 iOS 设备作为一个蓝牙外设连接时,对应的应用可以后台运行,但是使用此模式需要用户进行授权认证

Background fetch

iOS 7 新增加的一个选项,用于即使在后台,也需要频繁更新数据的应用。例如一个 PM2.5 的应用,需要几个小时更新一次数据,那么可以开启此选项,设置一个时间间隔,从而让 iOS 在间隔时间内在后台启动该应用,执行指定数据的获取工作,而此过程最多只能执行 30 秒钟。
代码实现可参考:http://www.jianshu.com/p/82f639012f3e

Remote notifications

iOS 7 新增加的一个选项,是一种静默推送,它有别于一般的推送,应用收到此类推送后,不会有任何的界面提示,而当应用退出或者挂起时收到此类推送,iOS 也会启动或者唤醒对应的应用。例如一个阅读应用,用户订阅的博客更新了,那么可以先发一个静默推送,应用收到此种推送后,可以先把用户订阅的博客内容都下载好,再通知用户,这样用户一打开应用就可以马上开始阅读。收到静默推送,会回调对应的回调方法,而此回调方法最多只能执行 30 秒钟。
代码实现可参考:http://www.jianshu.com/p/82f639012f3e

基于 NSURLSession 的后台传输

此为 iOS 7 新增加的特性,用于在后台下载或者上传大文件,步骤如下:创建后台传输用的 NSURLSession 对象;向这个对象中加入对应的传输的 NSURLSessionTask,并开始传输;在实现 AppDelegate 里实现 -application:handleEventsForBackgroundURLSession:completionHandler: 方法,以刷新 UI 及通知系统传输结束。一旦后台传输的状态发生变化(包括正常结束和失败)的时候,应用将被唤醒并运行 AppDelegate 中的回调。但是也有一些限制,后台传输只会通过 Wi-Fi 来进行。后台下载的时间与以前的关闭应用后X分钟的模式不一样,而是为了节省电力变为离散式的下载。
代码实现可以参考:http://onevcat.com/2013/08/ios7-background-multitask/

Resource Tags

按需加载资源基础。
在开发时,通过给按需加载资源分配一个或多个tag来区分。tag是一个你创建的字符串标识符。你可以使用tag的名称来区分这些资源在你的app中是如何使用的。例如,在一个游戏中,所有第五关的资源可以使用tag level-5。
通过Resource Tags可以创建新的tag,tag由app store保管。例如上面的游戏示例,下载正在使用的tag level-5以及即将使用到的tag level-6。同时删除之前不需要的tag。
下载和管理按需加载资源是由操作系统完成的。app使用NSBundleResourceRequest来控制。

具体使用请参考此文章

上一篇下一篇

猜你喜欢

热点阅读