蘋果系統(tǒng)包括:iOS、macOS、watchOS、tvOS。應(yīng)用軟件的生命周期為:開發(fā)、上線、安裝、使用、卸載。這篇文檔將從應(yīng)用生命周期的各個環(huán)節(jié)介紹蘋果系統(tǒng)對應(yīng)用的管理機制,主要詳細介紹iOS和macOS,watchOS與tvOS由于用戶數(shù)量少,以及流程與iOS相似度較高,只作了簡單介紹。
iOS
一、開發(fā)
注冊賬號:
單純開發(fā)是不用付費的,使用模擬器就可以。如果要真機調(diào)試,或者提交appstore,需要申請開發(fā)者帳號。
需要提交:1、注冊一個蘋果賬號作為開發(fā)者賬號。2、個人或企業(yè)的姓名、地址、聯(lián)系方式等相應(yīng)資料。3、能夠做美金結(jié)算的信用卡賬。4、支付99美金給蘋果公司。
另外,申請企業(yè)賬號需要提供DUNS(鄧白氏編碼)以及稅務(wù)等相應(yīng)資料。D-U-N-S Number 是一組唯一的九位數(shù)字,用于檢查所在組織的身份和法人實體狀態(tài)。如果未擁有此識別碼,需要將信息提交給 Dun & Bradstreet,以獲取一個免費的 D-U-N-S Number。
Apple 開發(fā)者到期 App 是會下架,但是已經(jīng)安裝 App 的用戶,手機仍能使用App,App Store里面搜索不到。續(xù)費 Apple 開發(fā)者后,App 會在當(dāng)天上線App Store。Apple開發(fā)者到期時不能轉(zhuǎn)讓App。
開發(fā)工具:
蘋果應(yīng)用開發(fā)需要使用mac系統(tǒng)下的Xcode,使用Objective-C和Swift語言。Xcode由蘋果公司開發(fā)的集成開發(fā)環(huán)境,免費對用戶使用,可以開發(fā)iOS、macOS、watchOS、tvOS四個系統(tǒng)應(yīng)用。
二、上線
應(yīng)用開發(fā)完成后,如要發(fā)布上架App store,大致經(jīng)過以下8個步驟。
1. 登錄Apple開發(fā)者中心網(wǎng)站,選擇certificates,Identifiers and profiles,在APP IDs選項里注冊一個APP ID,用于標(biāo)識一個或一組APP,需要填寫APP的描述和需要注冊的服務(wù)功能。
2.創(chuàng)建開發(fā)證書,證書分為iOS Development(開發(fā)證書)和iOS Distribution(發(fā)布證書),開發(fā)證書用于真機調(diào)試,有一年使用期限。發(fā)布證書用于APP的發(fā)布。
3.配置iOS Provisoning Profiles(debug)描述文件,Provisoning Profiles是蘋果簽名認證的Plist文件,列舉了開發(fā)證書、APP ID、以及授權(quán)運行設(shè)備的UDID(為一個設(shè)備的唯一標(biāo)識)。
4.在Xcode中進行應(yīng)用證書注冊并打包APP。在工程里將Provisoning Profiles配置導(dǎo)入,完成后就可以打包APP了,導(dǎo)出APP包。
5.真機調(diào)試??梢栽谑跈?quán)的設(shè)備上進行真機調(diào)試,將打包導(dǎo)出的APP包安裝于設(shè)備上,安裝時系統(tǒng)會對開發(fā)證書進行認證,成功后app會安裝在設(shè)備上,可以在設(shè)備上對app進行測試。
6.真機測試沒問題后,可以對APP進行上架發(fā)布。這里需要進入開發(fā)者中心創(chuàng)建發(fā)布證書,并配置Provisoning Profiles 描述文件。
7.需要在itunes connect 上創(chuàng)建本應(yīng)用的項目。在開發(fā)者中心的itunes connect管理界面創(chuàng)建一個新APP項目,填寫APP的相關(guān)信息包括描述、銷售范圍、版本信息、關(guān)鍵詞等。
8.提交審核。需要提供一個測試賬號用于審核人員進行測試。應(yīng)用提交之后審核人員對應(yīng)用進行審核。審核針對安全、性能、業(yè)務(wù)、設(shè)計、法律五個層面。
安全:不包含不良內(nèi)容,不造成人身安全隱患、數(shù)據(jù)安全、不得在指定容器范圍外讀寫數(shù)據(jù)、不具有特殊權(quán)限
性能:APP完成度、硬件兼容性、能耗、占用系統(tǒng)資源量、網(wǎng)絡(luò)性能
業(yè)務(wù):付款、廣告合乎標(biāo)準(zhǔn)
設(shè)計:不涉抄襲、有價值、
法律:隱私、知識產(chǎn)權(quán)
蘋果官方要求,開發(fā)和上線應(yīng)用必須通過Xcode這一集成開發(fā)工具,也就是只能在mac電腦下完成。但如果想在windows環(huán)境下完成開發(fā),也可以通過一些其它途徑。借助LBuilder、HBuilder、APICLoud、APPCan等工具,可以把網(wǎng)站打包成APP,之后通過上架輔助軟件Appuploader進行windows下APP的上架。Appuploader是ios上架輔助工具,可以直接得到.p12和.mobileprovision證書文件,上傳ipa到App store,打破了上架ios只能在蘋果電腦用Xcode的限制,使用費用100元/年。
三、安裝
在 iOS 出來之前,在主流操作系統(tǒng)(Mac/Windows/Linux)上開發(fā)和運行軟件是不需要簽名的,軟件隨便從哪里下載都能運行,導(dǎo)致平臺對第三方軟件難以控制,盜版流行。蘋果希望解決這樣的問題,在 iOS 平臺對第三方 APP 有絕對的控制權(quán),一定要保證每一個安裝到 iOS 上的 APP 都是經(jīng)過蘋果官方允許的,怎樣保證呢?就是通過簽名機制。
ios 正規(guī)的應(yīng)用安裝方式分為三種:
1.通過APP store安裝
對于通過APP store安裝的應(yīng)用,iOS為了確保所有的應(yīng)用程序沒有被修改,要求必須使用蘋果頒發(fā)的證書對可執(zhí)行代碼進行簽名。開發(fā)者使用蘋果頒發(fā)的發(fā)布證書簽名后,將應(yīng)用題叫道APPstore審核,審核成功后,蘋果使用其私鑰對程序進行簽名。用戶從APPstore下載安裝應(yīng)用,iOS調(diào)用系統(tǒng)進程獲取provisioning profile文件,對應(yīng)用程序進行證書校驗。
2.開發(fā) App 時直接把開發(fā)中的應(yīng)用安裝進手機進行調(diào)試,即在上線時的真機調(diào)試
開發(fā)時安裝APP,它有兩個需求,1)安裝包不需要傳到蘋果服務(wù)器,可以直接安裝到手機上。2)蘋果必須對這里的安裝有控制權(quán),包括a.經(jīng)過蘋果允許才可以這樣安裝。b.不能被濫用導(dǎo)致非開發(fā)app也能被安裝。蘋果使用雙層簽名的機制,
1)在你 Mac 開發(fā)機器生成一對公私鑰,這里稱為公鑰L,私鑰L。
2)蘋果自己有固定的一對公私鑰,跟上面 AppStore 例子一樣,私鑰在蘋果后臺,公鑰在每個 iOS 設(shè)備上。這里稱為公鑰A,私鑰A。
3)把公鑰 L 傳到蘋果后臺,用蘋果后臺里的私鑰 A 去簽名公鑰 L。得到一份數(shù)據(jù)包含了公鑰 L 以及其簽名,把這份數(shù)據(jù)稱為證書。
4)在蘋果后臺申請 AppID,配置好設(shè)備 ID 列表和 APP 可使用的權(quán)限,再加上第③步的證書,組成的數(shù)據(jù)用私鑰 A 簽名,把數(shù)據(jù)和簽名一起組成一個 Provisioning Profile 文件,下載到本地 Mac 開發(fā)機。
5)在開發(fā)時,編譯完一個 APP 后,用本地的私鑰 L 對這個 APP 進行簽名,同時把第④步得到的 Provisioning Profile 文件打包進 APP 里,文件名為,把 APP 安裝到手機上。
6)在安裝時,iOS 系統(tǒng)取得證書,通過系統(tǒng)內(nèi)置的公鑰 A,去驗證的數(shù)字簽名是否正確,里面的證書簽名也會再驗一遍。
7)確保了里的數(shù)據(jù)都是蘋果授權(quán)以后,就可以取出里面的數(shù)據(jù),做各種驗證,包括用公鑰 L 驗證APP簽名,驗證設(shè)備 ID 是否在 ID 列表上,AppID 是否對應(yīng)得上,權(quán)限開關(guān)是否跟 APP 里的 Entitlements 對應(yīng)等。
3.企業(yè)內(nèi)部分發(fā),可以直接安裝企業(yè)證書簽名后的 APP
企業(yè)內(nèi)部應(yīng)用,即只在企業(yè)部門和員工內(nèi)部使用、不對外公開的應(yīng)用。蘋果提供了專門的In-House證書用來發(fā)布這種應(yīng)用,可以分發(fā)給任意的手機,只要通過一個URL即可下載安裝,不用上傳到App Store審核。In-House應(yīng)用,有時需要根據(jù)部門需求進行版本的快速迭代,因為不需要App Store審核,所以可以做到隨時修改,隨時發(fā)布,節(jié)省了大量的時間。
在打包安裝時同樣需要創(chuàng)建證書,證書類型為In-House型,之后創(chuàng)建配置文件(Distribution Provisioning Profiles),過程和其他證書創(chuàng)建過程類似。在Xcode中導(dǎo)入配置文件,打包程序,可以導(dǎo)出ipa和plist文件。Plist文件中包含ipa的URL、安裝時顯示的 icon 的url、bundle id、版本號、安裝前的提示信息。將plist文件上傳至服務(wù)器,企業(yè)員工在safari瀏覽器中輸入鏈接即可安裝。Safari操作的具體流程是:
1)Safari解析輸入的字符串,找到plist文件
2)根據(jù)plist文件里面提供的信息下載并安裝ipa包,還會訪問大小圖標(biāo),大小圖標(biāo)在ipa包正在下載時顯示,當(dāng)下載完畢后顯示程序自帶的圖標(biāo)
3)下載安裝后,如果想打開程序還需要在手機 設(shè)置-<通用-<描述文件與設(shè)備管理,在“企業(yè)級應(yīng)用”分組下,點擊 信任 開發(fā)者的證書里面選擇相應(yīng)的證書信任后,方可打開程序。
綜上,3種安裝方式歸根結(jié)底,都是通過驗證安裝程序的provisioning profile文件。安裝應(yīng)用程序時,Provisioning Profile 文件被拷貝到 iOS 設(shè)備中,運行該 iOS App 的設(shè)備通過它來認證安裝的程序。Provisioning Profile 把AppID、簽名證書、設(shè)備授權(quán)這些信息全部打包在一起,方便我們在調(diào)試和發(fā)布程序打包時使用。這樣,只要在不同的情況下選擇不同的 Provisioning Profile 文件就可以了。
除了在正規(guī)途徑下安裝應(yīng)用以外,通過“打破”原有權(quán)限,獲取更高權(quán)限,可以實現(xiàn)脫離官方平臺,自由安裝第三方的應(yīng)用,即我們口中的“越獄”。
iOS系統(tǒng)具有封閉性,通過代碼簽名機制限制未經(jīng)簽名的代碼在iOS系統(tǒng)中執(zhí)行。用戶不能訪問系統(tǒng)資源,也無權(quán)修改,只能使用蘋果頒發(fā)證書的正規(guī)途徑的應(yīng)用或程序接口完成系統(tǒng)允許的操作。越獄后,用戶可以獲得權(quán)限訪問與修改系統(tǒng)文件,繼而獲得更多的權(quán)限,完成之前未被iOS允許的功能。越獄的原理是通過漏洞。至少需要2個漏洞,第一個漏洞用來完成專有代碼執(zhí)行,第二個漏洞用來使內(nèi)核的安全措施失效,提升權(quán)限。
越獄之后安裝應(yīng)用可不通過APP store,有一些越獄者制作的類似APP store的應(yīng)用安裝商店,APP store默認安裝位置為/var/mobile/Applications目錄里,越獄后可安裝在根目錄下,所以墻紙、主題、鈴聲等一些個性化應(yīng)用在越獄后可以得到安裝。
四、使用
iOS 程序 5 種狀態(tài):
1. Not running:
應(yīng)用還沒有啟動,或者應(yīng)用正在運行但是途中被系統(tǒng)停止
:
當(dāng)前應(yīng)用正在前臺運行,但是并不接收事件(當(dāng)前或許正在執(zhí)行其它代碼)。一般每當(dāng)應(yīng)用要從一個狀態(tài)切換到另一個不同的狀態(tài)時,中途過渡會短暫停留在此狀態(tài)。唯一在此狀態(tài)停留時間比較長的情況是:當(dāng)用戶鎖屏?xí)r,或者系統(tǒng)提示用戶去響應(yīng)某些(諸如電話來電、有未讀短信等)事件的時候。
:
當(dāng)前應(yīng)用正在前臺運行,并且接收事件。這是應(yīng)用正在前臺運行時所處的正常狀態(tài)。
:
應(yīng)用處在后臺,并且還在執(zhí)行代碼。大多數(shù)將 要進入Suspended狀態(tài)的應(yīng)用,會先短暫進入此狀態(tài)。然而,對于請求需要額外的執(zhí)行時間的應(yīng)用,會在此狀態(tài)保持更長一段時間。另外,如果一個應(yīng)用要求啟動時直接進入后臺運行,這樣的應(yīng)用會直接從Notrunning狀態(tài)進入Background狀態(tài),中途不會經(jīng)過Inactive狀態(tài)。比如沒有界面的應(yīng)用。注此處并不特指沒有界面的應(yīng)用,其實也可以是有界面的應(yīng)用,只是如果要直接進入background狀態(tài)的話,該應(yīng)用界面不會被顯示。
:
應(yīng)用處在后臺,并且已停止執(zhí)行代碼。系統(tǒng)自動的將應(yīng)用移入此狀態(tài),且在此舉之前不會對應(yīng)用做任何通知。當(dāng)處在此狀態(tài)時,應(yīng)用依然駐留內(nèi)存但不執(zhí)行任何程序代碼。當(dāng)系統(tǒng)發(fā)生低內(nèi)存告警時,系統(tǒng)將會將處 于Suspended狀態(tài)的應(yīng)用清除出內(nèi)存以為正在前臺運行的應(yīng)用提供足夠的內(nèi)存。
應(yīng)用啟動過程:
1、執(zhí)行main函數(shù)
2、在此方法中調(diào)用UIApplicationMain
2.1 創(chuàng)建UIApplication對象(UIApplication對象是應(yīng)用程序的象征,一個UIApplication對象就代表一個應(yīng)用程序。每一個應(yīng)用都有自己的UIApplication對象,而且是單例的,如果試圖在程序中新建一個UIApplication對象,那么將報錯提示。一個iOS程序啟動后創(chuàng)建的第一個對象就是UIApplication對象,且只有一個。利用UIApplication對象,能進行一些應(yīng)用級別的操作。)
創(chuàng)建UIApplication的delegate對象。(UIApplication Delegate的作用是當(dāng)應(yīng)用程序發(fā)出一系列系統(tǒng)事件如來電或鎖屏等,做出相應(yīng)的反應(yīng)。新建完項目,都有個帶有“AppDelegate”字眼的類,它就是UIApplication的代理,AppDelegate默認已經(jīng)遵守了UIApplicationDelegate協(xié)議,已經(jīng)是UIApplication的代理。系統(tǒng)事件如程序降將要啟動、程序啟動完成、程序進入后臺、程序進入前臺、程序退出等。)
開啟消息循環(huán)
3、delegate對象開始監(jiān)聽系統(tǒng)事件
3.1 app啟動完成后會調(diào)用delegate對象的程序加載完成的方法
如果app的plist設(shè)置了main storyboard 會創(chuàng)建UIWindow對象(如 果沒有設(shè)置則不創(chuàng)建)
創(chuàng)建main storyboard中綁定的controller對象(stroyboard中箭 頭指向的控制器)
設(shè)置給window對象的rootViewController
3.5 設(shè)置window對象可見
屏幕響應(yīng)順序
iOS和安卓系統(tǒng)具有不同的屏幕響應(yīng)順序,IOS對屏幕的響應(yīng)順序是:觸摸→媒體→服務(wù)→架構(gòu),而安卓是:程序→框架→屏幕顯示資源→架構(gòu)。所以在視覺效果上,iOS會有更流暢的感覺。
后臺管理機制
從iOS 3開始,蘋 果為iPhone引進了push notification,不啟動應(yīng)用也 能收到推送消息,原理是 消息由APNS(Apple Push Notification Service, Apple Push服務(wù)器)統(tǒng)一管 理,隨著iOS 4的發(fā)布,iOS也開始有了 多任務(wù)功能,當(dāng)你點擊H o m e鍵后,當(dāng)前 程序轉(zhuǎn)入后臺(iOS 4之前按Home鍵就 直接干掉應(yīng)用了),后臺應(yīng)用以墓碑的形 式(退出前的狀態(tài))保存在內(nèi)存中,用戶 可以快速恢復(fù)。但是蘋果對后臺的限制非 常嚴格,只有一些特殊應(yīng)用可以在后臺 真正運行,比如音頻播放類、VoIP類、 newsstand、位置服務(wù)等。
如果不做任何配置的話,你的應(yīng)用最 多只能在后臺運行5秒,之后就會被掛起 (存于內(nèi)存但不運行),如果你配置了后 臺運行(如需下載),大概在594秒( 分鐘)時進程停止,程序同樣也會被掛 起,一旦系統(tǒng)需要內(nèi)存了,最早的后臺進 程就會被殺掉以釋放內(nèi)存。
從 iOS 7 開始, 一旦手機鎖屏, 后臺應(yīng)用將會很快被暫停, 之后當(dāng)系統(tǒng)被喚醒時,那些暫停的后臺應(yīng)用會一起繼續(xù)運行?,F(xiàn)在的iOS后臺管理很智能, 他會記憶你每天什么時段打開什么應(yīng)用, 經(jīng)過一段時間后, 他會在適當(dāng)時間喚醒相應(yīng)的應(yīng)用。iOS7新增三種后臺模式:
Baxkground Fetch 后臺應(yīng)用刷新
iOS 7 之前的應(yīng)用必須在打開時才能聯(lián)網(wǎng)獲取數(shù)據(jù), 而它可以讓應(yīng)用在后臺直接獲取數(shù)據(jù)。
Silent Remote Notifications 靜默推送喚醒
iOS 7 之前當(dāng)收到消息后, 只有打開應(yīng)用才能從APNS獲取推送的具體消息, 現(xiàn)在在收到消息后, 會自動喚醒相應(yīng)的APP , 讓該APP在后臺獲取消息, 再通知用戶。
Background Transfer Servce 后臺傳輸
以前一旦下載被轉(zhuǎn)移到后臺最多只能持續(xù)運行549秒(分鐘), 現(xiàn)在所有的下載任務(wù)會交給系統(tǒng)獨立的進程去完成, 不管APP在前臺、掛起還是被殺掉, 下載都在繼續(xù)進行。
自動清理機制
iOS系統(tǒng)在安裝應(yīng)用或者使用過程中存儲空間不足時,會自動清理一些應(yīng)用的緩存以釋放空間。
APP 更新推送
當(dāng)app有新版本時,可以在APP store里更新應(yīng)用。APP在安裝的時候,會在數(shù)據(jù)庫里appid對應(yīng)的列表下新增版本號的關(guān)鍵字。用戶在【更新】界面刷新操作后,發(fā)送請求查詢用戶表,并關(guān)聯(lián)APP信息表獲取到用戶安裝過的每一款A(yù)PP的最新版本號列表。然后把最新版本號列表中的app版本號,與本地的app版本進行比對,如果最新版本號列表中的版本號大于本地版本號,則會有更新提示。
五、卸載
iOS 文件目錄結(jié)構(gòu):
/:為根目錄
Applications: 存放所有的系統(tǒng) APP 和來自 Cydia 的 APP,不包括從 App Store 下載的APP
Developer: 供開發(fā)者使用
Library:系統(tǒng)資源,用戶設(shè)置
System:系統(tǒng)的重要組成部分
User:用戶目錄,實際指向 /var/mobile
bin:存放用戶級可執(zhí)行文件,如 ls、mv 等
dev:設(shè)備文件
etc:存放系統(tǒng)腳本、hosts 配置、SSH 配置文件等
sbin:存放系統(tǒng)二進制文件
usr:用戶工具和程序
var:變量文件,在正常運行的系統(tǒng)中其內(nèi)容不斷變化的文件
應(yīng)用都是安裝在/var/mobile/Applications目錄下,且應(yīng)用沙盒機制,每一個應(yīng)用分配自身的存儲空間,不能越界訪問。應(yīng)用程序沙盒目錄下有三個文件夾Documents、Library(下面有Caches和Preferences目錄)、tmp。Documents:保存應(yīng)用運行時生成的需要持久化的數(shù)據(jù)iTunes會自動備份該目錄。Library/Caches:一般存儲的是緩存文件,例如圖片視頻等,此目錄下的文件不會再應(yīng)用程序退出時刪除,在手機備份的時候,iTunes不會備份該目錄。Library/Preferences:保存應(yīng)用程序的所有偏好設(shè)置iOS的Settings(設(shè)置),iTunes會自動備份該文件目錄下的內(nèi)容。tmp:臨時文件目錄,在程序重新運行的時候,和開機的時候,會清空tmp文件夾。
iOS 中 app 對本地存儲只能訪問到自己的根目錄,再往上就沒有權(quán)限了。在刪除應(yīng)用時,app自身的存儲空間的根目錄會直接刪除,在機制內(nèi)不會留下殘留文件。
Mac OS
Mac OS是基于Unix內(nèi)核的圖形化操作系統(tǒng);由蘋果自行開發(fā),不對外銷售,一般情況下在普通PC上無法安裝,只安裝于蘋果的設(shè)備中。mac OS雖然也對應(yīng)用有較嚴格的管理機制,但與手機端iOS系統(tǒng)相比,用戶具有更多的權(quán)限。
一、開發(fā)
mac OS應(yīng)用的開發(fā)過程與iOS的開發(fā)類似,需要付費注冊開發(fā)者賬號,同樣使用Xcode作為開發(fā)工具。
二、發(fā)布
應(yīng)用開發(fā)完成后,發(fā)布方式與iOS下有所不同。除了在app store線上發(fā)布,還可以在平臺以外發(fā)布。mac開發(fā)下的證書有5種:
開發(fā)證書:
(1)Mac Development:用于開發(fā)和測試的證書,跟iOS development證書一樣;運行在指定設(shè)備上需要把設(shè)備的UUID添加到devices里面去。
發(fā)布證書:
Mac App Store
(2)Mac App Distribution:這個用于 Xcode 自己把.app 文件上傳到 Mac App Store,具體的上線過程與iOS應(yīng)用類似。
(3)Mac Installer Distribution:這是用于開發(fā)者自己把.app 文件打包成 .pkg 文件,再用 Xcode 自帶的 App Application Loader 上傳到 Mac App Store ,可用于上傳到store前模擬真實的store環(huán)境。
Developer ID
(4)Developer ID Application:這個用于開發(fā)者使用開發(fā)者帳號簽名,導(dǎo)出一個線下發(fā)布版本的 .app 文件,但是由于脫離了蘋果的 Mac App Store,還是加上許可協(xié)議打包成 .pkg 文件再發(fā)布比較好,給用戶一個決定是否安裝的機會。這就要用到第5個證書。
(5)Developer ID Installer:用于開發(fā)者打包,同時加上開發(fā)者帳號簽名,打包生成一個.pkg的安裝包,可以裝到任意一臺Mac電腦上執(zhí)行安裝過程。
5種證書,開發(fā)證書用于開發(fā)和測試,發(fā)布證書就對應(yīng)著app store和線下兩種發(fā)布形式。根據(jù)需要的發(fā)布形式創(chuàng)建對應(yīng)的證書,證書的創(chuàng)建過程可參考iOS應(yīng)用的證書創(chuàng)建,發(fā)布的具體過程可以按照官方文檔和Xcode的提示一步步來。當(dāng)然如果不想用證書也不擔(dān)心用戶拒絕來源不明的應(yīng)用的話,也可以不用任何證書簽名打包應(yīng)用,用默認的簽名方式就可以。
三、安裝
mac OS上對于應(yīng)用的不同發(fā)布形式,也有不同的安裝方法,可以分為三種。
1.對于app store上的應(yīng)用,即上一部分的(2)(3)發(fā)布方式,用戶可以直接登錄自己的蘋果賬戶,進行購買或者獲取資源下載,對軟件的購買在平臺完成,蘋果會抽取一部分分成。app store上的應(yīng)用經(jīng)過蘋果內(nèi)部人員的審核和測試,本身會具有更高的完整度、質(zhì)量和運行穩(wěn)定性。但是國內(nèi)應(yīng)用的很多軟件app store都沒有,需要線下的方式進行安裝。
2.第二種安裝方式是線下的.app格式的應(yīng)用的安裝,即上一部分的(4)發(fā)布方式。這種用戶可以自行從網(wǎng)上搜索下載源,一般下下來的安裝文件是一個.dmg格式的磁盤映像,dmg 是蘋果的壓縮鏡像文件,類似于 Windows 下的 ISO,雙擊打開后會給系統(tǒng)掛上一個類似移動硬盤的虛擬磁盤,安裝完后可以右鍵彈出。它是 macOS 應(yīng)用軟件通用的打包格式,里面一般包含“應(yīng)用程序名.app”的圖標(biāo)和一個應(yīng)用程序文件夾(/Applications)快捷方式。直接將圖標(biāo)拖曳至應(yīng)用程序文件夾,即可完成安裝,非??旖?。
3.第三種是.pkg安裝包的安裝,即上一部分的(5)發(fā)布方式。.pkg屬于系統(tǒng)級軟件的安裝程序,類似于windows中的.exe安裝程序,會閱讀許可協(xié)議并選擇安裝位置、安裝內(nèi)容,一般會修改系統(tǒng)配置,權(quán)限較高,需要sudo授權(quán)。
對于一些來源不明或沒有證書的應(yīng)用,在打開安裝程序時有時會出現(xiàn)“文件已損壞,打不開”。這是由于系統(tǒng)的安全機制對來源不明的軟件的限制??梢酝ㄟ^在命令行里修改權(quán)限,在系統(tǒng)偏好設(shè)置的安全性與隱私設(shè)置里,改成允許任何來源的應(yīng)用。
有時還會提示“來自身份不明的開發(fā)者”,這時同樣在偏好設(shè)置的安全性與隱私設(shè)置里,可以看到要打開的應(yīng)用被阻止的提示,點擊“仍要打開”即可。
蘋果的應(yīng)用為.app的格式,既是一個包,包含應(yīng)用的全部內(nèi)容,可以右鍵顯示包內(nèi)容,對里面的文件或配置進行修改(具有比iOS更高的權(quán)限),同時也是一個可執(zhí)行文件,安裝在Applications文件夾后會自動出現(xiàn)在系統(tǒng)的Launchpad(啟動臺)里。
四、卸載
mac上對于應(yīng)用的卸載,由于安裝方式不同,卸載方式也不同。app store里安裝的應(yīng)用,類似于iOS,在Launchpad(啟動臺)里長按圖標(biāo),點叉號即可卸載。線下的app store平臺外自己安裝的應(yīng)用極少數(shù)會自帶卸載程序,多數(shù)直接在Applications文件夾里右鍵刪除即可。只是對于.pkg安裝包安裝的應(yīng)用,由于有時具有較高權(quán)限,可能會修改系統(tǒng)配置,所以刪除應(yīng)用后有時可能會有卸載殘留,可以通過第三方卸載軟件或手動刪除。
watchOS
watchOS是蘋果公司基于iOS 系統(tǒng)開發(fā)的一套使用于Apple watch的手表操作系統(tǒng)。它的應(yīng)用的開發(fā)與上線與iOS相同,用戶只能通過App store來安裝應(yīng)用。在2019年6月之前,對應(yīng)用程序的安裝不能在apple watch上直接進行,只能結(jié)合iphone使用。連接之后在iPhone上打開Apple Watch應(yīng)用程序,來安裝需要的表上應(yīng)用。安裝完成后,會首先在iPhone上面顯示。需要說明的是,Apple Watch APP應(yīng)用程序都是必須要配合iPhone使用的,因此所有安裝到Apple Watch上面的應(yīng)用程序,都會同時安裝到iPhone上。2019年6月之后發(fā)布的新的watchOS系統(tǒng),自帶app store,不用再連接iphone來安裝應(yīng)用,可以直接在app store里獲取安裝。
卸載應(yīng)用也是兩種方式,既可以在apple watch內(nèi)直接卸載,也可以與iPhone配對,通過iPhone里的apple watch應(yīng)用來管理手表應(yīng)用。
tvOS
tvOS是蘋果公司專門為Apple TV設(shè)計的操作系統(tǒng),基于 iOS。2016年3月發(fā)布了 tvOS 9.2 操作系統(tǒng)。Apple TV是蘋果公司推出的一款高清電視機頂盒產(chǎn)品,用戶可以通過Apple TV在線收看電視節(jié)目,也可以通過Airplay功能,將iPad、iPhone、iPod和PC中的照片、視頻和音樂傳輸?shù)诫娨暽线M行播放。tvOS也可以安裝一些應(yīng)用,具有獨立的應(yīng)用生態(tài),通過自帶的app store進行搜索和安裝。
tvOS應(yīng)用的開發(fā)與發(fā)布也與iOS類似,需要注冊成為開發(fā)者,使用官方的開發(fā)工具xcode進行開發(fā),開發(fā)與發(fā)布同樣需要創(chuàng)建證書。具體過程均與iOS相同。
在國內(nèi)目前用戶不多,不能直接收看國內(nèi)的有線衛(wèi)視節(jié)目,需要聯(lián)網(wǎng)安裝app來收看電視臺。
蘋果系統(tǒng)與其他系統(tǒng)比較
iOS與macOS對比
兩個系統(tǒng)都是蘋果自主研發(fā)的系統(tǒng),但我們也可以看出,macOS的用戶比起iOS擁有更廣的權(quán)限,可以訪問系統(tǒng)資源,讀寫系統(tǒng)目錄、系統(tǒng)文件,也可以訪問應(yīng)用內(nèi)部目錄,對其配置文件進行修改,還可以下載安裝來自任何來源的應(yīng)用。相比之下,iOS的系統(tǒng)生態(tài)就更加封閉,使用者無法查看系統(tǒng)文件資源,也不能訪問應(yīng)用內(nèi)部,只能通過應(yīng)用的接口來使用和管理應(yīng)用。而對于廣大蘋果手機用戶而言,他們所使用的唯一的應(yīng)用安裝方式就是通過官方的APP store。
iOS系統(tǒng)應(yīng)用與安卓對比
具有安裝來源不同、用戶權(quán)限不同、運行機制不同、后臺機制不同、響應(yīng)處理指令權(quán)限不同幾大區(qū)別。相比之下優(yōu)點:1)所有上線應(yīng)用經(jīng)過審核,具有更高的穩(wěn)定性、流暢度、安全指數(shù)、優(yōu)化性,且可以保護版權(quán),安卓應(yīng)用開發(fā)者隨意開發(fā),參差不齊。2)應(yīng)用具有較低的權(quán)限,可以更好的保護用戶隱私,相比之下,安卓許多應(yīng)用如不開放權(quán)限則不讓用戶使用。3)通過優(yōu)先響應(yīng)屏幕和獨特的對內(nèi)存管理的方式使其具有更流暢的運行效果。4)iOS軟硬件垂直整合,只運行在蘋果設(shè)備上,安卓可以運行在多種設(shè)備上,所以iOS上的應(yīng)用有更好的兼容性。
缺點:1)安卓系統(tǒng)開放,且開發(fā)門檻低,所以資源多,開發(fā)者多,創(chuàng)新也多。2)安卓系統(tǒng)用戶權(quán)限大,所以操作更靈活,也更加個性化。
windows與macOS應(yīng)用對比
開發(fā)門檻不同:mac應(yīng)用開發(fā)成本大,windows程序任意開發(fā)者均可以免費開發(fā)。
安裝來源不同:windows可以隨意安裝程序,mac的可以通過app平臺或平臺之外,均會驗證證書,質(zhì)量更高。
安裝方法不同:windows安裝包進行安裝,mac可以應(yīng)用商店直接獲取,或者直接復(fù)制app到應(yīng)用程序,或者安裝包安裝。
應(yīng)用文件結(jié)構(gòu)不同,windows除了安裝根目錄,還會寫入注冊表信息,通過exe執(zhí)行文件啟動。mac的app文件既是整個應(yīng)用包,同時是啟動入口。
卸載方式不同:windows通過卸載程序,mac直接刪除。
蘋果系統(tǒng)中的安全機制
Apple ID雙重認證
首次登錄一臺新設(shè)備時,除輸入密碼外,還需要在信任設(shè)備上的授權(quán)才可以登錄。輸入驗證碼后,即確認信任這臺新設(shè)備。由于只輸入密碼不再能夠訪問帳戶,因此雙重認證顯著增強了 Apple ID 以及所有通過 Apple 儲存的個人信息的安全性。登錄成功后,系統(tǒng)將不會再次要求信任設(shè)備的驗證,除非完全退出登錄帳戶、抹掉設(shè)備數(shù)據(jù)或出于安全原因而需要更改密碼。受信任設(shè)備是已使用雙重認證登錄的設(shè)備,可以是裝有 iOS 9 及更高版本的 iPhone、iPad 或 iPod touch 或者裝有 OS X El Capitan 及更高版本的 Mac。受信任電話號碼是指可通過短信或自動語音電話接收驗證碼的號碼。您必須至少驗證一個受信任電話號碼才能注冊雙重認證。
代碼簽名
蘋果也是通過代碼簽名來保證每一個安裝到iOS上的APP都是經(jīng)過蘋果官方允許的,防止盜版軟件、病毒入侵、靜默安裝等。蘋果也是通過代碼簽名來保證每一個安裝到iOS上的APP都是經(jīng)過蘋果官方允許的,防止盜版軟件、病毒入侵、靜默安裝等。
可信引導(dǎo)
iOS設(shè)備開機后采用一種稱為可信引導(dǎo)的方式進入系統(tǒng)。引導(dǎo)過程中,安全只讀內(nèi)存 (SecureROM) 是首先被引導(dǎo)的部分,其中嵌入了根證書 (Root Certificate)用以檢查下一步所加載組件的RSA簽名。 在隨后的每個步驟中,系統(tǒng)校驗下一步驟所要加載組件的 RSA 簽名。這一信任鏈 (Chain of Trust) 保證了系統(tǒng)啟動過 程中的所有組件沒有被破壞和修改。
沙盒機制
沙盒也叫沙箱,英文standbox,其原理是通過重定向技術(shù),把程序生成和修改的文件定向到自身文件夾中。在沙盒機制下,每個應(yīng)用程序都有自己的存儲空間,程序之間的文件夾不能互相訪問。iOS系統(tǒng)為了保證系統(tǒng)安全,采用了這種機制。iOS 應(yīng)用程序在安裝時,會創(chuàng)建屬于自己的沙盒文件,應(yīng)用程序不能直接訪問其他應(yīng)用程序的沙盒文件,當(dāng)應(yīng)用程序需要向外部請求或接收數(shù)據(jù)時,都需要經(jīng)過權(quán)限認證,否則,無法獲取到數(shù)據(jù)。應(yīng)用程序中所有的非代碼文件都保存在沙盒中,比如圖片、聲音、屬性列表,sqlite數(shù)據(jù)庫和文本文件等。
數(shù)據(jù)加密
iOS4 及以后的系統(tǒng)使用數(shù)據(jù)加密機制來保護文件系 統(tǒng)中的系統(tǒng)和數(shù)據(jù)分區(qū)。系統(tǒng)和數(shù)據(jù)分區(qū)中的數(shù)據(jù)將由一 個基于硬件設(shè)備的密鑰進行加密。在 iPhone3GS 以后的設(shè) 備上,該密鑰存儲于一個AES加密加速硬件上。這個基 于硬件的密鑰不能被 CPU 所訪問,只有在加解密時才能 由該加速器獲取。通過這種機制,直接從硬盤上被取走的 原始數(shù)據(jù)就無法被正確解密。同時,數(shù)據(jù)加密機制還提供 了多種加密策略供應(yīng)用程序選擇。應(yīng)用程序可以選擇對一 些敏感文件使用NSFileProtectionComplete 策略而不是默認 的 NSFileProtectionNone 策略加密數(shù)據(jù)。
瘋狂肆虐的電腦病毒幾乎都是針對Windows的,由于MAC的架構(gòu)與Windows不同,沙盒機制、使用人數(shù)少、研究成本大、對應(yīng)用安裝的管控力度,所以很少受到病毒的襲擊。
(正文已結(jié)束)
推薦閱讀:雅迪戰(zhàn)警x7
免責(zé)聲明及提醒:此文內(nèi)容為本網(wǎng)所轉(zhuǎn)載企業(yè)宣傳資訊,該相關(guān)信息僅為宣傳及傳遞更多信息之目的,不代表本網(wǎng)站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風(fēng)險,提醒廣大民眾投資需謹慎!