本文是本人自己辛苦翻译的,请转载的朋友注明,翻译于Z.MJun的简书 ,感谢!<翻译不容易啊>
翻译于2015年10月4日
Core Services Layer
这个核心服务层包含应用的基本系统服务。关键这些服务是在核心功能和核心功能库之间,所有的应用都必须使用这些基础类型。这个层同时包含个别的技术,例如本地,iCloud,公共媒体和网络。
高级别的特性
接下来的部分描述的是一些在核心服务层下高级别的特性
点对点服务(Peer-to-Peer Services)
多点连接库提供了点对点的连接超过蓝牙。你可以初始化点对点连接和附近的设备进行交互会话。虽然点对点连接主要用在游戏上,但是你可以使用这个特性在其他类型的应用上。-
iCloud 存储(iCloud Design Guide)
iCloud存储让应用写用户文档和数据到本地中心。用户可以从他们的电脑或者IOS设备访问这些。使得用户的文档存储在ICloud下,用户就可以不需要在同步的情况下,使用其他设备来修改或者查看他们的文档,明确的转移文件。安全的存储文档到用户的iCloud账号下。即使用户丢失了设备,文档也还在iCloud存储里。
应用可以使用这两个iCloud存储特性方法。- iCloud document storage 文档存储
可以把文档和数据存储在用户的iCloud账号下 - iCloud key-value data storage 钥匙数据存储
可以通过应用间的接口分享小数据 - CloudKit storage
当你想创建公共分享内容,或者管理自己传输数据
许多应用使用iCloud文档通过iCloud账号来分享文档。用户关心文档什么时候通过设备分享,或者他们可以看见和管理这些来自共享的文档。与之相反,iCloud key-value的数据用户是看不见的,但是,这是一个方式通过应用接口分享这个小数据(10k)。应用应该使用这个特性来存储非临界应用数据,例如,preferences配置,而不是重要的应用数据。
- iCloud document storage 文档存储
-
对象Block (Blocks Programming Topics) (Guide)
Block Objects是基于C语言结构,可以使用在C语言代码下和OBJ-c语言代码下。一个Block对象是本质上是一个没有名称的功能和数据通过这方法获得,一些在其它应用里面是通过呼叫closure或者lambda。Blocks有使用独特,如callbacks或者在一个地方你需要一个方法简单的结合运行的代码和相关的数据。
在IOS,blocks通常使用在- 类似替代Delegate和Delegate方法
- 类似替代callback功能
- 执行一次性操作的完成处理程序
- 便于在和集中的所有item执行任务
- 和dispatch queues一起使用,执行异步任务
数据保护(App Programming Guide for iOS)
数据保护允许应用在一些设备中使用更有优势的经过内置加密的用户数据。当你的应用指定一个需要保护的特殊文件,系统会使用加密来存储这个文件到硬盘上。当设备上锁,你的应用甚至黑客入侵,都不能访问到这个文件。但是,当用户解锁设备,应用就可以使创建的解密文件来访问文件。你可以使用不同级别的数据保护。
实现数据保护你需要考虑你要怎么创建和管理你想保护的文件。应用必须设计成保护创建时的数据,和当用户锁与解锁设备下,访问文件情况。-
支持文件分享
分享文件支持让应用在iTunes9.1或更高的版本上可以获得用户数据。一个应用需要声明支持文件分享,在/Documents 的字典下分享内容。用户可以把分享到iTunes的文件移进或移出这个字典。这个特性不允许应用在同一个设备上从其他应用分享文件到应用里。这个特性需要pasteboard和一个文档管理对象。
允许分享文件到你的应用里- 添加UIFileSharingEnabled Key到你的应用Info.plist里面,设置这个值为YES
- 把你想分享的文件放在应用的Documents下
- 当设备和电脑相连接时,iTunes就会显示这个文件分享到显示在选择设备的表现上。
- 用户可以添加文件到字典下,或者吧文件移到桌面。
应用支持文件分享,应该具有管理他们的能力。当文件被增加到Documents下,和作出相应的响应。例如,你的应用吧一些显得内容通过接口添加到这里,你不应该吧这个目录的文件列表呈现给用户,而是告诉他们决定怎么使用这些文件。
GCD (Guide)
GCD是一个BSD级别的技术,可以在应用中管理执行中的任务。GCD结合异步编译模式,是一种很方便和高效,不同线程的高级语言的模式。GCD同时为低级别任务提供许多便捷的方法,如,阅读和编写文件描述,实现定时器,监视信号和处理事件。In-app Purchanse
In-App Purchase提供出售应用中指定的内容,服务,和iTunes内容到你的应用里。使用StoreKit库可以实现这些特性,库提供了使用iTunes账号来处理交易事项。应用控制了整个用户体验和可视化支付展现的内容或者服务。对于可以下载的内容,你可以承载自己的内容或者让苹果服务帮你承载。SQLite
SQLite库提供了一个高效内嵌式数据库在应用中,你可以不需要使用一个外置的数据库服务。对于应用,你可以创建本地的数据库和管理或者记录文件。这个库为一般使用者设计,具有高效的访问和处理能力。
访问SQLite库的头文件在<iOS_SDK>/usr/include/sqlite3.h,在Xcode的安装路径下。支持XML documentation for libxml2
这个功能库提供了NSXMLParser类处理来自XML文档的内容。另外,还支持操作在libxml2库下XML数据。这个是开源的库,让你快熟的解析或者编写XML数据或者转化XML内容为HTML。
libxml2库的头文件在<iOS_SDK>/usr/include/libxml2/ 下,在Xcode的安装路径下。
核心服务库 Core Services Framework
接下来要介绍的是这个库和库下的功能
列表
- 5.0 系统用户 Accounts.framework (AC)
- 2.0 通讯录 AddressBook.framework(AB)
- 6.0 广告 AdSupport.framework (AS)
-
2.0 网络处理 CFNetwork.framework
(Guide) (CF) -
8.0 云处理 CloudKit.framework
(CK) -
3.0 核心数据 CoreData.framework
(NS) -
2.0 核心功能 CoreFoundation.framework
(NS) -
2.0 核心位置 CoreLocation.framework
(Guide) (CL) -
4.0 核心媒体 CoreMedia.framework
(CM) -
4.2 核心手势 CoreMotion.framework
(CM) -
4.2 核心电话 CoreTelephony.framework
(CT) -
4.0 日历事件 EventKit.framework
(EK) -
2.0 功能 Foundation.framework
(NS) - 8.0 保健 HealthKit.framework (HK)
- 7.0 JaveScript JavaScriptCore.framework(JS)
- 3.0 手机核心服务 MobileCoreServices.framework(UT)
- 7.0 多点连接 Multipeer Connectivity Framework(MC)
- 5.0 新闻 NewsstandKit.framework(Guide)(NK)
- 6.0 Passes PassKit.framework (Guide)(PK)
- 4.0 快速预览 QuickLook.framework(QL)
- 7.0 Safari服务 SafariServices.framework(SS)
- 6.0 社会 Social.framework(SL)
- 3.0 支付 StoreKit.framework (Guide)(SK)
- 2.0 系统配置 SystemConfiguration.framework(SC)
- 8.0 网络 WebKit.framework (WK)
5.0 系统用户 Accounts.framework
提供了一种单一的登录模式。这个模式避免了多账号登录,并且优化的登录体验,可以通过这个库登录和修改用户数据。同时,为你的应用简化了管理时的授权问题。使用这个库是可以联合Social framework一起使用。(AC)2.0 通讯录 AddressBook.framework
直接进入用户的通讯录。如果你的应用需要使用通讯录信息,你可以使用这个库来进入和修改通讯录信息。如,需找最近加入通讯录的信息并且显示信息。(AB)6.0广告 AdSupport.framework
提供用于广告目的的标识符的访问,这个框架还提供了一个标志,判断用户是否选择了广告跟踪。在使用标识符访问前,应用需要可读,并且忠诚于广告追踪。(AS)-
2.0 网络处理 CFNetwork.framework
(Guide)
一个以C语言为基础,面向对象,高效的处理网络库。这库提供许多处理网络组件堆的细节和更加容易使用底层的模块,如BSD socket。并且简化了FTP,HTTP服务,或者解决DNS host.(CF)- 使用BSD sockets
- 使用SLL或者TLS时候,创建加密链接
- 解决DNS hosts
- 为HTTP服务,验证HTTP服务,HTTPS服务等工作
- 为FTP服务工作
- 发布,处理和浏览 Bonjour服务等(Guide)
8.0 云处理 CloudKit.framework
提供了一个通道从你的应用到ICloud来传输数据。不同于其他iCloud技术,这种传输更加直接。这个库给予了当数据产生变化时,你可以控制他的能力。同时可以使用它管理所有的类型数据。
应用可以通过他把商店数据直接的分享给所有使用者,这个公共库是设应用绑定的,即使你没有注册iCloud账号。应用开发者,可以直接在这里管理数据,并且可以了解到用户的任何修改数据的行为。 (CK)-
3.0 核心数据 CoreData.framework
是一项管理数据模型技术,Model-View-Controller应用。这个库有意使得应用使用的数据模型都是最高标准的。而不是定义数据结构,在xcode里面使用图形工具来构建一个模式表示数据模式。在应用运行的时候,实例中的数据模式的创建,管理和可视化都是通过这个库完成的。(NS)- 对象数据存储在高性能的SQLite数据库
- 一个NSFetchedResultsController类管理tableView的结果
- 管理重做/恢复的能力在基础文本修改能力之上
- 支持属性值的验证
- 支持继承和确保类之间的关系持续一致
- 支持在内存里形成组,筛选数据和组织数据能力
如果你将要准备开发一个新的应用或者计划升级已经存在的应用。你应该要考虑使用这个库。举一个例子在IOS应用里使用这个库,请查看Core Data Tutorial for iOS
-
2.0 核心功能 CoreFoundation.framework
一些列基于C语言的接口,提供最基础的数据处理,和IOS服务特点。(CF)- 集合数据类型(数组,组,和其他)
- Bundles
- 字符串String管理
- 时间Date和Time管理
- 原始数据快管理
- 网络连接,网络流管理
- 多线程,循环运算
- 端口Port和socket连接
这个库和Foundation库有很大的关系,提供基于OBJ-c的接口一样的基础特性。当你需要混合类功能或者类型时,你可以利用两个不同类件存在的“toll-free bridging”,这个“toll-free bridging”指的是在一些方法里使用这个库和库类型交换和任意一个库。这个是的许多数据类型可以使用,包括集合和字符串数据类型。The class and type descriptions for each framework state whether an object is toll-free bridged and, if so, what object it is connected to。
-
2.0 核心位置 CoreLocation.framework
(Guide)
这个库为应用提供位置和标题信息。对于位置信息,这个库使用了GPS,cell,或者wifi遥控,来寻找用户的实际维度和精度。你可以在应用里使用这个技术为用户提供坐标信息。例如,你可能有一个业务是想要获得用户附近的餐厅,商店或者工厂等,或者是他当前的正确的位置。(CL)- 在有陀螺仪的IOS设备中访问指南针信息
- 在地图上或者蓝牙信息内获取监测地区信息
- 使用低能量的本地搜索
- 和Mapkit一同使用,在某种特定的情况下可以提高坐标质量,例如,导航。
4.0 核心媒体 CoreMedia.framework
为AVFoundation库提供了底层的图像类型。许多应用需要使用到这个库,但是他也只是为很少一部分开发者使用,用于精确地创建或者展现音频和视频内容。(CM)4.2 核心手势 CoreMotion.framework
为设备提供一组基于手势数据的接口。库支持访问原始和处理过的加速器数据使用一套新的基于块的接口。自带陀螺仪的设备,你可以检测原始的陀螺仪数据和,基于陀螺仪数据的游戏,或者其他使用到手势的应用,或者像一个方法来提高用户体验。自带运动统计的硬件设备,你可以访问这些数据,并且把数据用在保健的活动上。(CM)4.2 核心电话 CoreTelephony.framework
为拥有打电话功能的设备提供了一个基于手机信息接口。应用使用这个库可以获取关于用户的电话服务。适合一些打电话的应用,如,VoIP(网络电话)应用,并且可以接受电话的所有通知。(CT)-
4.0 日历事件 EventKit.framework
包含最常规的可以操作的音频和视频。不要直接使用这个框架。提供一个接口来访问用户设备上的日历。(EK)- 获取已经存在的事件,和从用户的日历上获得事件提醒
- 添加事件到用户日历上
- 用户可以创建提醒事件,并且显示在提醒事件的应用上 + 配置日历事件的闹钟,包括这是闹钟的内容
Important:反问用户的日历,并且提示数据需要得到用户的同意才能使用。应用必须处理用户的禁止访问。应用也是鼓励提供Info.plist上Keys描述,访问请求的需求。
-
2.0 功能 Foundation.framework
在Core Foundation库中的,这个库提供了许多基于OBJ-c基础类的特性。可以在Core Foundation库中找到描述。(NS)- 集合数据类型(数组,组,和其他)
- Bundles
- 字符串String管理
- 时间Date和Time管理
- 原始数据快管理
- 网络连接,网络流管理
- 多线程,循环运算
- 端口Port和socket连接
- 网络
- 正则匹配表达式
- 缓存机制
8.0 保健 HealthKit.framework
一个全新的库,管理用户和健康相关的信息。在扩散型应用,可以追踪健康的设备,和保健信息下,用户很难清楚他们是如何做的。但是,这个库使得应用梗荣的分享保健的相关信息,信息来源于IOS设备,或者用户手动录入。用户保健信息保存在安全而又集中的位置。用户可以在保健应用上,查看到自己的所有保健信息。
当你的应用支持这个库,你就可以访问用户相关的保健信息,获得一些用户信息,并且不需要追踪保健的设备。信息的分享都是由用户来决定的。当你的应用可以获得这些数据的时候,你就可以注册一个通知来获得信息变化,并且获得信息时间,可以微细的调控他。例如,你可以在应用中请求用户的血压,并且设置一个通知,关于血压高低的警告通知。(HK)7.0 JaveScript JavaScriptCore.framework
提供了基于OBJ-c包装的许多JaveScript标准类。使用这个库可以测试JaveScript代码和解析Json数据。(JS)3.0 手机核心服务 MobileCoreServices.framework
定义底层的类型,适用于UTIs标准定义(UT)7.0 多点连接 MultipeerConnectivity.framework
提供搜索附件的设备和直接交互那些不是通过网络连接的设备。这个库可以简单的创建多点会话,支持传输可靠的有序数据和实时传输。在这个库下,你可以和附近的设备交互和无缝交换数据。
这个库提供界面为扫描和管理网络的服务。应用可以整合 MCBrowserViewController到界面中来显示一个列表下的设备让用户选择。或者,你也可以使用MCNearbyServiceBrowser类来查看和管理设备等。(MC)5.0 新闻 NewsstandKit.framework(Guide)
提供一个阅读杂志和新闻的中心。发布者可以通过这个库创建应用开发布杂志,新闻到Newsstand上。Newsstand支持后台下载,在你开始下载后,系统会控制下载操作和完成后通知用户。(NK)6.0 Passes PassKit.framework (Guide)
Passbook应用提供给用户一个可以购买优惠劵,飞机票,其他票和商业打折卡的地方。替换以往的线下购买方式。用户现在可以在IOS设备下购买他们和与以前一样的使用他们。这个库提供了OBJ-c接口把items整合到你的应用里面。你可以使用这个应用组合网络接口和文件格式来创建和管理你的公司Offers。
通过你的公司的服务器来创建Passes,和通过用户的设备(via email,safairi,和应用)来交费用。这个Pass自身是个很特殊的文件格式,在支付前就已经加密了。这个文件格的ID相关信息关于关于服务以至于用户可以知道这些服务是做什么。它同时可以拥有一个bar代码,或者其他信息以至于你可以使用他来验证或者退货和使用。(PK)4.0 快速预览 QuickLook.framework
、在应用里,提供直接的接口预览文件内容。这个库是为从网络下载文件和位置源头的工作文件准备的。在获得文件之后,你使用库提供的viewcontroller来直接的显示这些文件内容。(QL)7.0 Safari服务 SafariServices.framework
为程序提供添加URLs到用户的Safari的阅读列表里面。(SS)6.0 社会 Social.framework
提供一个简单接口来访问用户的社交媒体账号。这个库取代Twitter库,和增加支持其他的社交账号,包括facebook,新浪微博,和其他。应用使用这个库来修改状态,和账号头像。这个库和Account库一起工作,为用户提供一个简单的登录模式,和确定通过用户账号认证。(SL)3.0 支付 StoreKit.framework (Guide)
支持支付内容和服务于IOS应用,如In-app Purchase。例如,你可以使用这个特性来允许用户在应用里解锁额外的内容。或者如果你是个游戏开发者,你可以使用它来提供额外的游戏关卡。同样的。这个库管理着交易事物,通过用户而itunes商店的账号来处理支付请求和获得购买内容的信息。(SK)2.0 系统配置 SystemConfiguration.framework
提供可达性接口,你可以使用它来决定设备的网络设置。你可以使用这个库来决定Wifi设置或者蜂窝网络下,是否可以访问特定的服务器。(SC)8.0 网络 WebKit.framework
([Core Services Layer][2])
让应用显示HTML内容。除了显示HTML以外,你可以提供基本的修改,用可以替换文字,修改文档内容和属性,包括CSS。WebKit同时也支持在DOM级别的HTML文档下创建和修改内容。例如你可以使用一页的摘要链接列表,修改他们和替换他们显示的优先级,在一个网络的界面内。(WK)