0

基本上我想知道应用程序是否可以相互独立地工作和存储数据,或者一个应用程序是否有可能修改另一个应用程序。还...

应用程序及其数据保存在手机上的哪个文件夹中?

如果我在应用程序中本地修改数据,数据会保存在其他应用程序可以访问的公共场所还是保存到该应用程序特定的文件夹中?

4

3 回答 3

2

iOS 在应用间通信方面还不够成熟。

数据可以使用系统剪贴板在应用程序之间共享,并通过电子邮件和网络服务等媒介在网络上传输。

iOS 设备还为应用程序通过 URL 和文件类型处理程序发送消息和数据提供了一种简单且定义明确的方法。这些技术分为两类:

  1. 自定义 URL 前缀,例如 someapp://something/somethingelse?somestuff=whatever
  2. 按文件扩展名(例如 *.txt)或 MIME 类型(例如 text/plain)的自定义文件类型处理程序。

当两个应用程序建立了特定协议时,自定义 URL 前缀很有用,而自定义文件类型处理程序更为通用,并且设计为允许任何应用程序自行注册和参与。本文介绍后者:化学数据的自定义文件类型处理程序。如果您为某个文件类型注册您的应用程序,它将如下所示 -

在此处输入图像描述

注册。您问题的第二部分-如果我在应用程序中本地修改数据,数据是否会保存在其他应用程序可以访问的公共场所,还是保存到该应用程序特定的文件夹中?

因此,每个应用程序在可以将数据存储在设备文件系统上的位置方面受到限制。iOS 通过允许应用程序仅读取和写入它们自己的 Documents 和 tmp 目录来实现这一点。在这两个目录中,相应的应用程序可以创建文件以及任何所需深度级别的子目录。该区域构成应用程序的沙箱,应用程序不能在这些目录之外创建或修改文件或目录。检查这个

于 2012-07-03T18:20:50.147 回答
1

这个问题第一部分的一般答案是:“不”。应用程序本质上是沙盒化的,因此无法相互通信。有许多例外情况:

  1. 如果您有权访问特定应用程序的自定义 URL 方案(Facebook Single Sign On 使用此方案)。
  2. 打开由系统上的多个应用程序处理的文档类型(例如在邮件中打开附件时)
  3. 如果两个应用程序都是由同一个发布者开发的,则可以选择使用 UIPasteboard、iCloud 共享键/值字典(尽管只有小数据集)或访问共享的钥匙串商店。

UIPasteboard 有一些奇怪的行为,因为您可以拥有系统范围的粘贴板或特定于应用程序的粘贴板,并且无法保证它何时会被清除。

第二个问题 - 文件夹结构 - 取决于操作系统版本,但通常所有应用程序都存储在 /var 目录下,然后是使用 UUID 表示应用程序的子目录结构,然后是主应用程序包,具有标准的应用程序包结构(包括 Documents 目录)。

至于修改数据和存储,再一次,一般是“否”。一些应用程序会使用 UIPasteboard 进行临时数据存储,但通常你不会在另一个应用程序中知道这一点,除非你已经编写了原始应用程序。

于 2012-07-03T18:33:37.237 回答
0

一般来说,每个应用程序只能访问自己的工作目录并将其所有数据保存在那里。因此,没有任何应用程序可以访问另一个应用程序的数据。

除了一些苹果的应用程序,如照片、地址簿、日历等。应用程序可以使用定义明确的 API 来访问它们并进行一些(受控)更改。在未来的 iOS 版本中(从 iOS 6 开始),用户将被询问第三方应用程序是否应该有权访问这几个 Apple 应用程序的数据。

Apple 还没有直接在应用程序之间共享数据的基于文件的解决方案(剪贴板除外,它是一个文件的例外)。

于 2012-07-03T18:26:13.010 回答