iOS 4層結構(iOS技術概要)—— Core Services層(三)

Core Services層爲所有的應用程序提供基礎系統服務。可能應用程序並不直接使用這些服務,但它們是系統很多部分的基礎。

高階特性

下面的部分會描述Core Services層一些關鍵技術:

一、雲存儲

 

iOS5.0引入,雲存儲允許你的應用程序存儲用戶文檔和數據到雲端,以及從用戶的電腦和iOS設備訪問這些數據。把用戶的數據存在雲端,意味着用戶可以在任何設備上查看以及編輯這些文檔無需同步以及設備間傳遞這些文件。在用戶的iCloud的賬號中存儲這些文件還爲用戶提供了一層安全防護,即使用戶丟失了一個設備,用戶的數據是不會因此而丟失的。

有兩種方法可以讓應用程序使用雲存儲,每一種都有自己的使用場景。

1、iCloud文檔存儲------使用這個特性存儲用戶文檔和數據到用戶的iCloud賬戶

2、iCloud鍵值數據存儲-----使用這個特性去共享應用程序中的少量實例對象。

大多數應用程序使用iCloud文檔存儲特性通過iCloud賬戶共享文檔數據,這個特性是用戶對iCloud存儲的認識,用戶關心的是這些共享的文件是否跨設備了,是否可以通過一個給定的設備查看以及管理這些文件。相比之下,iCloud鍵值數據存儲是用戶看不到的,這是你應用程序共享少量數據(幾十KB)一種方式。應用程序使用這個特性來存儲非關鍵性的數據,而不是重要數據。例如存儲用戶偏好。

如要了解如何在應用程序中使用iCloud,參考iCloud Design Guide。

 

二、自動引用計數

iOS5引入,自動引用計數(ARC)是一個編譯器級別的功能,簡化了OC對象生命週期的管理,相對於開發者自己時刻記着何時retain和release對象,ARC會在編譯期間自動評估你對象的生命週期並且插入適當的內存管理方法(retain和release方法)。


ARC替代了出現在iOS早期的版本中的傳統內存管理模式,你創建的新工程默認使用ARC,Xcode也提供了工具把非ARC工程轉換爲ARC工程,更多關於ARC的信息,參考Transitioning to ARC ReleaseNotes。

 

三、塊對象

iOS4.0引入,block對象是一個C語言層面上的對象,可以嵌入到你的C和OC代碼裏面。block對象本質上是一個匿名函數,可以像函數一樣擁有參數和返回值,其他語言裏把這種對象稱作closure或者lambda。blocks多用於回調 或者 用於綁定操作和操作需要的數據。

在iOS中,blocks常用於以下場景:

1、作爲代理和代理方法的替代

2、作爲回調方法的替代

3、一次性操作完成之後的事件處理

4、執行集合中每個元素的方法

5、和disPatch queue一通實現異步任務。

關於block對象以及它們的使用的介紹,參考A Short Practical Guide to Blocks。更多關於blocks的信息,參考Blocks Programming Topics。

 

四、數據保護

iOS4.0引入,數據保護允許應用程序使用設備內置的編碼器對用戶的敏感數據進行處理。當你的應用程序把某個文件指定爲保護類型時,系統會把這個文件以加密形式存放在硬盤上。當設備被鎖定時,你的應用程序和潛在的入侵者都無法訪問文件內容。然而,當你的設備被用戶解鎖之後,會創建一個解密密鑰,以允許你的應用程序訪問文件。

iOS5之後,數據保護增加了被保護文件的安全級別,這些級別允許你訪問一個已經打開的文件,儘管用戶已經鎖定了設備,或是解鎖屏幕後用戶隨後又鎖定了設備。

實現數據保護需要你考慮如何創建和管理想要保護的數據。應用程序必須保證數據創建時的安全,還要處理鎖屏與解鎖時數據的安全。

更多關於如何在應用程序爲文件添加數據安全的資料,參考iOS App Programming Guide。

 

五、文件共享支持

iOS3.2引入,文件分享能讓您通過iTunes(版本9.1以後)直接看到應用程序中的用戶數據。一個應用程序設置了文件共享之後,Documents文件夾下的內容可以被用戶從iTunes中看到,用戶可以根據需要通過iTunes往此文件夾增加文件或者從此文件夾移出文件。這個特性不允許你把文件共享給同一個設備上的其他應用程序。如果要給其他程序共享文件你需要使用粘貼板後者文檔交互控制器對象。

啓動應用程序的文件共享,需要完成以下事項:

1、往應用程序的Info.plist文件添加一個key“UIFileSharingEnabled”,並且將此key對應的value設置爲YES。

2、把你需要共享的文件存放到應用程序的Documents文件夾裏面。

3、設備連接到iTunes之後,iTunes應用程序選項卡中的文件共享部分會顯示你設備裏所有支持文件共享的應用程序,用戶可以把文件拖動到應用程序Documents文件夾或者把裏面的文件拖動到電腦上。

支持文件共享的應用程序能檢測到是否有文件添加到Documents文件夾,應用程序需要做適當的迴應。例如,你的應用程序應該在界面上顯示出來這些新添加的文件,而不是彈出Documents文件列表詢問用戶需要做什麼操作。

更多UIFileSharingEnabled的信息,參考Information Property List Key Reference。

 

六、Grand Central Dispatch

iOS4.0引入,它是BSD級別的技術,可用於在應用程序內管理多個任務的執行,GCD技術將異步編程模型和高度優化內核結合在一起,可作爲多線程的便捷(且更高效)替代。同時,它爲許多底層任務(例如讀寫文件描述符、實現計時器、監視信號和處理事件等)提供替代方案。

更多關於程序內使用GCD的方式,參考Concurrency Programming Guide。更多關於GCD函數的信息,參考Grand Central Dispatch(GCD)Reference。

 

七、程序內購買

iOS3.0引入,通過該功能,你可以在應用程序內出售內容或者服務,該功能使用Store Kit框架來實現,它可以爲使用iTunes賬戶進行的財務交易的處理提供基礎支持,應用程序只需要處理用戶體驗及代售內容或服務的展現。

iOS6中,增加了內容託管和應用程序內購買iTunes內容的支持。通過內容託管,你可以把用於下載的內容存儲在蘋果的服務器上,通過iTunes內容購買功能,你的應用程序標記需要賣的物品,剩下的一些事物由Store Kit幫你處理。

更多關於程序內購買的支持,參考In-App Purchase Programming Guide。更多關於Store Kit框架的信息,參考Store Kit Framework。

 

八、SQLite

SQLite庫允許開發者將一個輕量級的SQL數據庫潛入到應用程序,而且開發者不需要運行獨立的遠程數據庫服務器進程。在此之後,開發者可以在應用程序中創建本地數據庫文件,管理文件的表和記錄。雖然SQLite數據庫出於通用目的而設計,但它還是針對數據庫記錄的快速訪問做過優化。

用於訪問SQLite庫的頭文件位於<iOS_SDK>/usr/include/sqlite3.h。在該路徑中,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑,更多關於如何使用SQLite的信息,訪問http://www.sqlite.org網站。

 

九、XML支持

Foundation框架支持使用NSXMLParser類從XML文檔中解析元素,而libxml2庫則爲操作XML內容提供支持,libxml2庫是開源的,它可以讓你快速地解析或寫入任意的XML數據,也可以將XML內容轉換爲HTML文件。

用於訪問libxml2庫的頭文件位於<iOS_SDK>/usr/include/libxml2/。在該路徑中,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑,更多libxm2的使用信息,請訪問http://xmlsoft.org/index.html網站。

 

Core  Services層框架

 

Accounts Framework

iOS5引入,爲特定用戶賬號提供一個單點登錄模型,單點登錄提高了用戶體驗,因爲應用程序不在需要分別提示用戶輸入賬戶的登錄信息。它還簡化了你應用程序管理賬戶授權的過程。iOS5.0裏,應用程序可以使用這個框架結合Twitter框架訪問用戶的Twitter賬戶。

更多關於Accounts框架類的信息,參考Accounts Framework Reference。

 

Address Book Framework

Address Book框架支持編程訪問存儲於用戶設備中的聯繫人信息。如果應用程序使用到聯繫人信息,則可通過該框架訪問並修改用戶聯繫人數據庫的記錄。舉個例子,通過使用該框架,聊天程序可以獲取一個聯繫人列表,利用此列表初始化聊天會話,並在聯繫人視圖顯示列表的聯繫人。

iOS6以後,訪問用戶聯繫人信息需要經過用戶的允許,應用程序必須做好被拒絕訪問的準備,應用程序也需要提供一個屬性列表來描述爲什麼要訪問通訊錄,用以獲取用戶許可。

更多Adress Book框架的功能,參考Address Book Framework Reference for iOS.

 

Ad support Framework

iOS6引入,Ad Support框架爲要用廣告服務的應用程序提供了一個廣告標識符。這個框架同樣提供了一個opt-out標識來標明用戶是否退出廣告。應用程序需要讀取並根據opt-out標識,決定是否訪問廣告標識符。

更多關於這個框架的信息,參考Ad Support Framework Reference。

 

CFNetwork Framework

CFNetwork框架提供一組高性能基於C語言的接口,它們爲使用網絡協議提供面向對象抽象。通過這些抽象,你可以對協議棧進行更精細的控制,而且可以使用諸如BSD socket這類底層結構。你也可以通過該框架簡化諸如與FTP或HTTP服務器通訊以及DNS主機解析這類任務。下面列舉一些可以使用CFNetwork框架執行的任務:

1、使用BSD sockets

2、使用SSL或TLS創建加密連接

3、解析DNS主機

4、使用HTTP,校驗HTTP以及HTTPS服務器

5、使用FTP服務器

6、發佈、解析並瀏覽Bonjour服務。

CFNetwork理論及實現都以BSD socket爲基礎。更多關於如何使用CFNetwork框架的信息,參考CFNetwork Programming Guide和CFNetwork Framework Reference。

 

Core Data Framework

iOS3.0引入,Core Data框架是一種管理模型-視圖-控制器應用程序數據模型的技術,它適用於數據模型已經高度結構化的應用程序。通過此框架,您再也不需要通過編程定義數據結構,而是通過Xcode提供的圖形工具構造一份代表數據模型的圖標。在程序運行的時候,Core Data框架就會創建並管理數據模型的實例,同時還對外提供數據模型訪問接口。

通過Core Data管理應用程序的數據模型,可以極大程度減少編寫的代碼數量。除此之外,Core Data還具有下述特徵:

1、將對象數據存儲在SQLite數據庫以獲得性能優化

2、提供NSFetchedResultsController類用於管理表視圖的數據

3、管理undo/redo操作

4、屬性值校驗支持

5、支持對數據變化進行傳播,並且不會改變對象間的關聯

6、支持對數據進行歸檔,過濾,並支持對內存數據進行管理

如果您正在開發新應用程序或打算對某個現有的程序進行大幅度更新,請考慮使用Core Data。如果需要了解如何在iOS應用程序中使用Core Data,參考Core Data Tutorial for iOS.如果需要進一步瞭解Core Data框架中的類,參考Core Data Framework Reference。

 

 

Core Foundation Framework

CoreFoundation框架是一組C語言接口,它們爲iOS應用程序提供基本數據管理和服務功能。下面列舉該框架支持進行管理的數據以及可提供的服務:

1、羣體數據類型(數組、集合等)

2、程序包

3、字符串管理

4、日期和時間管理

5、原始數據塊管理

6、偏好管理

7、URL及數據流操作

8、線程和RunLoop

9、端口和socket通訊

CoreFoundation框架和Foundation框架緊密相關,它們爲相同功能提供接口,但Foundation框架提供OC接口。如果您將Foundation對象和Core Foundation類型參雜使用,則可利用兩個框架之間的“toll-free-bridging”。所謂的Toll-free-bridging是說您可以在某個框架的方法或函數同時使用Core Foundation和Foundation框架中的某些類型。很多數據類型支持這一特性,其中包括羣體和字符串數據類型。每個框架的類和類型描述都會對每個對象是否爲toll-free bridged,應和什麼對象進行橋接進行說明。

更多信息,參考Core Foundation Framework Reference。

 

 

Core Location Framework

CoreLocation礦建可用於定位某個設備當前經緯度。它可以利用設備硬件特性,通過附近的GPS、蜂窩基站或者WiFi信號等信息計算用戶方位。Maps應用程序就是利用此功能在地圖上顯示用戶當前位置。您可以將此技術結合到應用程序中,以向用戶提供訪問信息。例如,應用程序課根據用戶當前位置搜索附近飯店、商店或其他設施。

在iOS3.0系統中,該框架開始支持訪問iOS設備的方向信息

在iOS4.0系統中,該框架開始支持低能耗的方位監視服務,該服務利用蜂窩基站跟蹤用戶方位。

如何使用Core Location去獲得位置以及方向信息,參考Location Awareness Programming Guide和Core Location FrameworkReference。

 

Core Media Framework

iOS4.0引入了Core Media框架,此框架提供AV Foundation框架使用的底層媒體類型。只有少數需要對音頻或視頻創建及展示,進行精確控制的應用程序纔會涉及此框架,其他大部分應用程序都用不上。

如需進一步瞭解此框架的函數和數據類型,參考Core Media Framework Reference。

 

Core Motion Framework

Core Motion框架提供了一個單一的接口集,用於訪問設備上所有基於運動的數據。這個框架提供了一系列Block接口來訪問和處理原始或加工後的加速計數據。通過內置的陀螺儀,你可以檢索原始數據、映射後的屬性以及在設備上的旋轉速率。你可以在遊戲或者其他需要通過運動進行輸入來提高用戶體驗的應用程序中使用加速計和陀螺儀。

更多這個框架的類和方法的信息,參考Core Motion Framework Reference。

 

Core Telephony Framework

iOS4.0引入了Core Telephony框架,此框架爲訪問具有蜂窩無線的設備上的電話信息提供接口,應用程序可通過它獲取用戶蜂窩無線服務的提供商信息。如果應用程序對於電話呼叫感興趣,也可以在相應事件發生時得到通知。

如需進一步瞭解如何使用該框架的類和方法,參考Core Telephony Framework Reference。

 

Event Kit Framework

iOS4.0引入了Event Kit框架,此框架爲訪問用戶設備的日曆事件提供接口,您可以通過該框架訪問用戶日曆中現有事件,可以增加新事件。日曆事件可包含鬧鈴,而且可以配置鬧鈴激活規則。

iOS6添加了創建和訪問用戶設備上提醒的功能,你創建的提醒會通過“提醒”應用程序呈現出來。此外訪問日曆和提醒需要通過用戶許可,應用程序要做好被拒絕訪問此功能的準備,同樣需要提供一個屬性列表來描述需要訪問的原因,以便得到用戶許可。

更多這個框架中類和方法的信息,參考Event KitFramework Reference和Event Kit UI Framework。

 

Foundation Framework

Foundation框架爲Core Foundation框架的許多功能提供OC封裝。您可以參考Core Foundation Framework瞭解前面對Core Foundation框架的描述。Foundation框架爲下述功能提供支持:

1、羣體數據類型(數組、集合等)

2、程序包

3、字符串管理

4、日期和時間管理

5、原始數據塊管理

6、偏好管理

7、URL及數據流操作

8、線程和RunLoop

9、Bonjour

10、通訊端口管理

11、國際化

12、正則表達式匹配

13、緩存支持

如需進一步瞭解如何使用該框架的類和方法,參考Foundation Framework Reference。

 

Mobile Core Services Framework

iOS3.0引入了Mobile Core Services框架,此框架定義統一類型標識符(UTIs)使用的底層類型。

如需進一步瞭解此框架定義的類型,參考Uniform Type Identifiers Reference。

 

Newsstand Kit Framework

iOS5引入了Newsstand框架,爲用戶提供了一個專屬位置來閱讀雜誌和報紙。出版商可以在他們自己的應用程序使用Newsstand Kit框架將自己的報刊和雜誌放在Newsstand裏,它允許你在後臺下載新的報刊和雜誌,在你開始一個下載,系統會去處理下載操作,並通知你應用程序中有新的內容。

更多關於管理Newsstand下載的類的信息,參考Newsstand Kit Framework Reference。更多關於如何使用遠程通知的信息,參考Local and Push Notification Programming Guide。

 

Pass Kit Framework

iOS6引入,Pass Kit:使用web服務,一個新的文件格式,是OC層次上的框架,來實現通行證的下載。公司可以創建通行證代表物品,例如優惠券、登機牌、活動門票和折扣卡業務。相對於攜帶這些實實在在的物品,Pass Kit實現了將這些信息存儲於iOS設備的功能,使用起來和實物是一樣的效果。

通行證通過你公司的web服務創建,使用郵件、Safari或者你的程序傳遞到用戶的iOS設備,通行證本身使用了一個特殊的文件格式並且會在傳遞之前先加密。通過文件格式來區別不同的服務,以便用戶知道它是什麼(優惠券、打折卡等)。它可能包含一個條碼或者其他信息,你可以憑藉它獲取相應服務或者得到所需物品。

更多關於Pass Kit的信息以及如何將Pass Kit加入到你的應用程序,參考Passbook Programming Guide。

 

Quick Look Framework

iOS4.0引入了Quick Look框架,應用程序可以用該框架預覽無法直接支持查看的文件內容。如果應用程序從網絡下載文件或者需處理來源未知的文件,則非常適合使用此框架。因爲應用程序只要獲得文件後,調用框架提供的視圖控制器就可以直接在界面中顯示文件的內容。

如需進一步瞭解該框架的類和方法,請參考Quick Look Framework Reference。

 

Social Framework

iOS6.0引入了Social框架,提供了簡單的接口訪問用戶社交媒體賬戶。這個框架替代了iOS5引入的Twitter框架,並且增加了其他社交賬戶的支持,包括FaceBook和新浪微博服務。用戶可以使用這個框架通過用戶賬號發佈新的狀態和圖片。這個框架和Accounts框架配合使用爲用戶提供一個單點登錄(確保用戶賬號是允許訪問的)。

更多Social框架的信息,參考Social Framework Reference。

 

Store Kit Framework

iOS3.0引入Store Kit框架,此框架爲iOS應用程序內購買內容或服務提供支持。例如,開發者可以利用此框架允許用戶解鎖應用程序的額外功能。或者假設您是一名遊戲開發人員,則可使用此特性向玩家出售附加遊戲關卡。在上述的兩個情況中,Store Kit框架會處於交易過程和財務相關的事件,包括處理用戶通過iTunes Store賬號發出的支付請求並且嚮應用程序提供交易相關信息。

Store Kit框架主要關注交易過程中和財務相關的事務,目的是爲了確保交易安全準確。應用程序需要處理交易事務的其他因素,包括購買界面和下載恰當的內容。通過這種任務劃分方式,您就有用購買內容的控制權,可以決定希望展示給用戶的購買界面以及何時向用戶展示這些界面,同時也可以決定和應用程序最匹配的交付機制。

如需進一步瞭解Store Kit框架的使用方式,參考In-App Purchase Programming Guide和Store Kit Framework Reference。

 

System Configuration Framework

SystemConfiguration框架可用於確定設備的網絡配置。您可以使用該框架判斷WiFi或者蜂窩網絡連接是否正在使用中,也可以用於判斷某個主機服務是否可以使用。

如需進一步瞭解此框架提供的接口,參考System Configuration Framework Reference。如需通過此框架獲取網絡信息的示例,參考Reachability示例代碼工程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章