国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MAC OS X 最近打開文件(Security-scoped bookmark)

2019-11-09 17:37:30
字體:
來源:轉載
供稿:網友

問題:

Mac OS X APP在開發完成,上線的時候必須支持sandbox「http://blog.csdn.net/heroguo_jp/article/details/54862223」當設置完成SandBox之后 發現,打開最近文件.txt 之后修改保存,當再次打開的時候發現不能 打開運行啦?

原因:

Mac OS X系統為了保證系統的安全性采取啦安全保護機制。不允許你在沒有文件流的的方式打開文件【沒有權限打開】。

解決方案:
Security-scoped bookmark

在File access中 User Selected File項中選擇Read/Write 文件的讀寫權限 ,沙盒有一個默認的規則: 在APP 運行期間通過NSOpenPanel打開的任意位置的文件,把這個路徑保存下載,后面都可以直接使用這個路徑繼續訪問文件獲取文件的讀寫權限。

但是在APP重新啟動以后,這個文件路徑不能直接被訪問,要想要永久的訪問APP之外的路徑,就必須使用Security-scoped bookmark

Security-scoped bookmarks有2種:

An app-scoped bookmark:可以對應用中打開的文件或者文件夾在以后永久性訪問兒不需要再次通過NSOpenPanel打開。這種bookmark方式使用的比較多。

A document-scoped bookmark: 提供對特定的文檔的永久訪問權。可以理解針對文檔嵌套的一種權利模式。比如你開發一個能編輯PPT文檔的應用,里面嵌入了視頻文件,圖片文件連接。那么下次打開這個ppt文檔時就能直接訪問這些文件而不需要在通過NSOpenPanel打開獲得授權。

方法:

1、 保存打開文件的URL的Bookmark 獲取URL中的bookmarkData存儲到NSUserDefaults中

NSData *bookmarkData = [fileURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys:nil relativeToURL:nil error:&error];

2、應用啟動時通過URL的bookmark獲取文件授權 通過bookmark數據解析獲取授權的NSURL,并且執行startAccessingSecurityScopedResource方法得到訪問權限。 執行block回調完成相關內容讀取后,執行stopAccessingSecurityScopedResource停止授權。

NSURL *allowedUrl = [NSURL URLByResolvingBookmarkData:bookmarkData options:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:&isStale error:NULL];@try {[allowedUrl startAccessingSecurityScopedResource];block();} @finally {[allowedUrl stopAccessingSecurityScopedResource];}

Demo 地址:https://github.com/heroBlog/HGBookmark.git


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会泽县| 稻城县| 沙洋县| 萨迦县| 鄂伦春自治旗| 竹溪县| 利川市| 柳州市| 巴塘县| 梁河县| 教育| 明光市| 天峻县| 宁安市| 明水县| 庆安县| 青海省| 宽甸| 巴中市| 武城县| 靖宇县| 宜兰市| 平顶山市| 砀山县| 崇左市| 邯郸市| 芦溪县| 通化市| 舞钢市| 石门县| 连山| 疏附县| 永嘉县| 宜丰县| 保康县| 东乡| 余干县| 渭源县| 津南区| 孝昌县| 阿瓦提县|