ios沙箱軟體 iOS 開發之沙盒機制

2021-10-12 13:23:01 字數 2914 閱讀 9865

1.ios 沙盒機制簡介

沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制

ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用程式的沙盒檔案,當應用程式需要向外部請求或接收資料時,都需要經過許可權認證,否則,無法獲取到資料。

2.獲取沙盒路徑

通過nshomedirectory()獲取沙盒路徑並輸出

objective-c**nslog(@"%@",nshomedirectory());

swift**print(nshomedirectory())

3.沙盒檔案組成

沙盒的的根目錄有三個資料夾,分別是 documents,library,tmp

沙盒根目錄

documents/

documents中一般儲存應用程式本身產生檔案資料,例如遊戲進度,繪圖軟體的繪圖等, itunes備份和恢復的時候,會包括此目錄,

獲取documents檔案路徑

nssearchpathfordirectoriesindomains 是用來查詢檔案路徑的函式,其返回值是乙個陣列,這個陣列中只有乙個nsstring型別元素,這個元素儲存的就是查詢的路徑。

引數1: nsdocumentdirectory 表示需要查詢的是document資料夾

引數2:nsuserdomainmask 表示在使用者的主目錄中查詢

引數3:yes 表示返回路徑展開

objective-cnsstring *path = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes).lastobject;

swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.documentdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last

library/

library目錄下有兩個子目錄:caches 和 preferences

library目錄

獲取library路徑

objective-cnsstring *path = nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes).lastobject;

swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask, true).last

library/caches/

此目錄用來儲存應用程式執行時生成的需要持久化的資料,這些資料一般儲存體積比較大,又不是十分重要,比如網路請求資料等。這些資料需要使用者負責刪除。itunes同步裝置時不會備份該目錄。

獲取library/caches檔案路徑

objective-cnsstring *path = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes).lastobject;

swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.cachesdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last

library/preferences/

此目錄儲存應用程式的所有偏好設定,ios的settings(設定)應用會在該目錄中查詢應用的設定資訊。itunes同步裝置時會備份該目錄

在preferences/下不能直接建立偏好設定檔案,而是應該使用nsuserdefaults類來取得和設定應用程式的偏好.

獲取library/preferences/檔案路徑

objective-cnsstring *path = nssearchpathfordirectoriesindomains(nspreferencepanesdirectory, nsuserdomainmask, yes).lastobject;

swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.preferencepanesdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last

此方法獲取路徑是沙盒/library/preferencepanes,但並不存在這樣的路徑,想要訪問preferences資料夾,需要拼接路徑。

swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask, true).last! + "/preferences"

tmp/

此目錄儲存應用程式執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也可能會清除該目錄下的檔案。itunes同步裝置時不會備份該目錄

獲取tmp檔案路徑

objective-cnsstring *path = nstemporarydirectory();

swiftlet path = nstemporarydirectory()

ios沙箱軟體 iOS app ipa 與 沙盒

documents 儲存應用執行時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄 獲取路徑方法 nsstring documents nssearchpathfordirectoriesindomains nsdocumentdirectory,1...

IOS開發之 沙盒

ios沙盒目錄解析 出於安全考慮,ios系統的沙盒機制規定每個應用都只能訪問當前沙盒目錄下面的檔案 也有例外,比如系統通訊錄能在使用者授權的情況下被第三方應用訪問 這個規則把ios系統的封閉性展現的淋漓盡致。每個沙盒下面都有相似的目錄結構,如下圖所示 出自蘋果官方文件 每個應用的沙盒目錄都是相似的,...

iOS 開發之沙盒機制

1.ios 沙盒機制簡介 沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制 ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用...