Tag: Macos应用开发

使用适用于macOS App的App Sandbox

沙盒是保持应用程序数据访问可控的想法。 每个硬币都有两个面。 让我们看看两者。 没有沙箱 传统上,Mac Apps没有沙盒,开发人员可以完全访问计算机中的所有资源。 例如,一个人可以从任何位置存储和读取文件。 通常,默认情况下会将相同类型的文件放在一起。 以下是一些常见的路径: #文件 〜/图书馆/应用程序支持/com.abc.MyApp/ #NSUserDefaults 〜/ Library / Preferences / com.abc.MyApp.plist #缓存 〜/图书馆/应用程序支持/com.pinterest.PINDiskCache.mycache/ 在此示例中,“ com.abc.MyApp”是我的应用程序的捆绑标识符。 我正在使用PINCache来存储缓存,并将其持久化到磁盘空间。 您会注意到PINCache所存储的文件与应用程序文档处于同一级别。 非沙盒的问题 我知道有些开发人员喜欢完全可配置的环境。 但是,此方法存在一些问题: 1)骇客 由于应用程序可以访问整个系统,因此如果它被恶意代码注入,则系统可能会被黑客入侵 2) 杂乱的文件存储 由于文档,设置,缓存存储在不同的位置,因此花费了更多的开发工作。 例如,如果我想清理文件以重置应用程序,则应前往各个位置进行清理。 使用应用沙箱 随着iOS的发布,这一概念成为一种规范。 每个iOS应用程序都应带有自己的沙箱。 因此,开发人员应要求特定的权限才能获得系统中的其他资源。 为了通过Mac App Store分发应用程序,开发人员必须打开App Sandbox授权。 例如,我正在构建一个使用CloudKit同步数据的应用程序。 我将在“传入和传出网络连接”两个框中打勾。 如果要将检索到的CloudKit记录保存到Documents文件夹中的文件中,则应为“ User Selected File”选择“ Read / Write access”。 在沙盒模式下,所有文件都存储在一个容器中。 例如,上一个示例中的位置将变为: 〜/图书馆/应用程序支持/容器/com.abc.MyApp/Data/图书馆/应用程序支持/ 沙盒问题 […]