标签: icloud-drive

如果用户未启用iCloud Drive,CloudKit的应用程序会受到哪些限制

如果用户未打开iCloud Drive,哪些CloudKit服务不可用?

是否有办法从应用程序打开iCloud Drive?

我想从公共容器下载记录应该可以工作,无论iCloud Drive,只有在启用时才写入容器?!

ios cloudkit icloud-drive

5
推荐指数
2
解决办法
941
查看次数

如何通过提供“icloud 凭据”通过 JavaScript/PHP 提取 icloud 数据?

我们正在寻找任何类型的 SDK / API 或可用于提取 icloud 数据的参考资料,例如(消息、照片和视频、浏览器历史记录、通话记录、联系人、已安装的应用程序、联系人(实时)、照片和视频(实时)、位置) (实时)、WhatsApp 消息、Skype 消息、日历、线路消息、Kik 消息、Viber 消息、Facebook 消息、微信消息、Snapchat 消息、文件列表、浏览器历史记录(实时))通过提供 icloud 凭据作为输入。

我们正在尝试制作一个类似于https://www.reincubate.com/contact/support/icloud-api/#working的网络服务/软件,用于为 icloud 用户提供从 icloud 服务器提取数据的许可 API。

已经通过 icloudKit JS 和 icloud 存储 API(键值存储和 iCloud 文档存储)但不清楚,因为它们可能有助于我们想要实现的目标。

Apple 可能会提供用于提取 icloud 数据的 API / SDK,因为他们有许多可用的 icloud 备份提取器软件软件,并且需要知道他们正在使用什么后端。

下面提到了 icloud 备份提取器软件软件的示例:

  1. http://www.iphonebackupextractor.com/
  2. http://www.iskysoft.com/data-recovery/icloud-backup-extractor.html

sdk ios icloud icloud-api icloud-drive

5
推荐指数
1
解决办法
2692
查看次数

iCloud Drive 和 CloudKit 有什么区别?

iCloud Drive 和 CloudKit 有什么区别?哪个更适合存储手动、定期的应用程序文档备份?我确实看到了这个问题:

iCloud 与 iCloud Drive 与 CloudKit

但它是关于成本而不是实际服务之间的差异。

backup ios cloudkit icloud-drive

5
推荐指数
1
解决办法
3965
查看次数

读取 iOS 上文档存储(“存储文档和数据”)设置的值

在 iOS 的设置屏幕中,我可以为支持 iCloud Drive 的应用程序选择“文档存储”设置(类似于移动数据、相机访问选项)。那里写着“存储文档和数据”,有两个选项:iCloud Drive 或在我的手机上,意思是本地。 在此输入图像描述

如何访问我的应用程序中选定的选项?

我的应用程序基于 UIDocumentBrowser,启用了“支持就地打开文档”和“应用程序支持 iTunes 文件共享”。某些应用程序(例如 Apple Mail)仅在按下“共享”按钮时支持“复制到”选项(与“打开方式”相比)。在这种情况下,我想将共享文档复制到我的应用程序中的相应目录,即本地目录或应用程序的 iCloud Drive 目录,具体取决于用户在常规设置中的选择。

现在,我根据 iCloud Drive 是否启用来决定将文档复制到哪里。然而,有可能 iCloud Drive 已启用,但用户选择存储在他的 iPhone 上(本地)。

商店中有一些基于 UIDocumentBrowser 的应用程序并支持此功能。特别是当他们提供创建新文件功能时

谢谢!

iOS11、Xcode 10.1

ios icloud-drive

5
推荐指数
1
解决办法
584
查看次数

如何以编程方式在我的 iOS 应用程序中强制进行 iCloud Drive 同步?

我用来FileManager.default.contentsOfDirectory获取 iCloud Drive 目录的内容。但是,有时,当我在 Mac 上删除文件时,内容不是最新的。我可以通过打开 iPhone 上的“文件”应用程序并浏览到该目录来强制同步。之后,更改在我的 iOS 应用程序中也可见。

我的问题:如何手动和以编程方式强制在我的 iOS 设备 (iPhone) 和 iCloud 之间同步 iCloud Drive?

synchronization ios icloud-drive

5
推荐指数
0
解决办法
578
查看次数

我是否必须下载所有iCloud文件才能生成缩略图?

我已经阅读了有关此错误的堆栈溢出的所有答案,但没有一个解决了这个问题,因为我的问题有点不同.

我正在枚举iCloud驱动器元素NSMetadataItem并将它们存储在一个数组上.

文件在那里:通过查看OS X上的iCloud文件夹以及使用的设备进行确认UIDocumentPicker.

稍后在代码中我尝试使用以下方法检索此类元素的缩略图:

// self.item is a NSMetadataItem
NSURL *fileURL = [self.item valueForAttribute:NSMetadataItemURLKey];

AVAsset *asset = [AVAsset assetWithURL:fileURL];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform = YES;

CMTime time = CMTimeMakeWithSeconds(1, 60);

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
  if (result != AVAssetImageGeneratorSucceeded) {
    NSLog(@"couldn't generate thumbnail, error:%@", error);
  }

  // TODO Do something with the image
};

generator.maximumSize = size;
[generator generateCGImagesAsynchronouslyForTimes:@[[NSValue valueWithCMTime:time]]
                                completionHandler:handler];
Run Code Online (Sandbox Code Playgroud)

我在处理程序中收到此错误:

无法生成缩略图,错误:错误域= NSURLErrorDomain代码= …

ios icloud icloud-drive

4
推荐指数
1
解决办法
1006
查看次数

iCloud Drive问题:“ [DocumentManager]无法关联所选URL的缩略图”

我已经从包含多个属性的对象创建了一个JSON字符串文件。这是对象:

RecipeFile : Codable {
  var name: String
  var theRecipeIngredients: [String]
  var theRecipeSteps: [String]
  var theRecipeRating: Int
  var theRecipeCategory: String
  var theRecipeIndexStrings: String
  var theRecipeImage: String?
Run Code Online (Sandbox Code Playgroud)

我使用以下代码创建JSON字符串文件:

let json_encoder = JSONEncoder()
let recipeFileName = recipeToDisplay.name! + UUID().uuidString + ".json"
let exportFilePath = getDocumentsDirectory().appendingPathComponent(recipeFileName)
do {
   let jsonData = try json_encoder.encode(exportRecipeFile)
   if let jsonString = String(data: jsonData, encoding: .utf8)
      {
         try jsonString.write(to: exportFilePath, atomically: false, encoding: .utf8)
      }
   } catch {
      print(error.localizedDescription)
   }
Run Code Online (Sandbox Code Playgroud)

我将其上传到iCloud Drive。我使用UIDocumentPickerViewController从iCloud驱动器导入了字符串文件。我可以解析导入的文件。但是,当调用func documentPicker(_控制器:UIDocumentPickerViewController,didPickDocumentsAt urls:[URL])时,我在xCode调试区域中收到了此消息(已编辑以删除一些路径信息):

[DocumentManager]无法将所选URL文件的缩略图:/// .....波旁威士忌%20Chocolate%20Walnut%20Pie18D20181-DAFD-499C-9873-7D3E0794C37A.json与收件箱副本文件:/// .....波旁威士忌相关联%20Chocolate%20Walnut%20Pie18D20181-DAFD-499C-9873-7D3E0794C37A.json:Error Domain …

xcode swift icloud-drive

4
推荐指数
2
解决办法
2995
查看次数

有没有办法手动将文件卸载到 iCloud Drive?

TL;DR:我有一个小型内部硬盘驱动器和一个 2TB iCloud 驱动器。我想访问我的所有文件 (iCloud),但我不希望我的计算机上的所有文件。

在 macOS 中(我相信自从 Sierra 以来)Apple 包含一项功能,您可以将桌面和文档文件夹同步到 iCloud Drive,如果启用它,当您的驱动器填满时,macOS 会删除这些文件的本地副本并将其替换为一个小占位符。

我想知道是否有一种方法可以选择以这种方式以及何时将哪些文件卸载到 iCloud。假设我刚刚在我的 Documents 文件夹中添加了一个我想保留的文件,但我暂时不打算使用它,所以我只想将它同步到 iCloud,然后用占位符替换本地副本,而不是等待让我的驱动器填满,然后让 macOS 自动卸载文件。

此外,如果不仅仅是文档和桌面可卸载会很好,但我猜苹果没有在他们的 SDK 中公开那么多功能,我可以编写一个应用程序来做到这一点。

我目前没有使用任何 Apple 批准的语言(Swift 和 Obj-C)进行开发,但是如果有一种方法可以创建一个具有将文件卸载到 iCloud Drive 的能力的应用程序,我将深入研究该语言以解决这个问题。

注意:我知道我可以通过将文件拖入 Finder 中的 iCloud Drive 图标来将我想要的任何文件存储在 iCloud Drive 中,但据我所知,这些文件需要文件的本地缓存,而不是 Documents 和 Desktop 中的这种占位符方法文件夹同步使用。如果有一种方法可以通过 Finder 中面向 iCloud Drive 访问的客户卸载,我也愿意接受该方法。

macos icloud icloud-drive

4
推荐指数
1
解决办法
2104
查看次数

在禁用 iCloud 驱动器的情况下运行 CloudKit 应用程序

我有两个应用程序访问 iCloud。第一个是基于文档的应用程序,通过 UIDocument/NSDocument 类使用 iCloud 文件夹,无需 CloudKit。相反,第二个应用程序使用 CloudKit 通过 cloudkit 数据库而不是 iCloud 文件夹访问数据。

当我禁用 iCloud 驱动器时,第一个应用程序会从列表中消失,但第二个应用程序仍然存在,这表明对 iCloud 的访问仍然可用。

但是,当 iCloud 驱动器被禁用时,CKContainer.accountStatus 返回“noAccount”,即使我已登录。当我忽略它并运行查询时,它不会返回任何记录。

iCloud 驱动器占用大量设备存储空间,因此一些用户可能会选择禁用它。出于这个原因,我更喜欢访问 iCloud,而不是使用 iCloud 驱动器。有办法吗?

顺便说一句,iCloud 文档对 CloudKit 和 iCloud Drive 进行了强烈区分,这可能被解释为 iCloud 驱动器的存在对于 iCloud 数据库访问并不重要的另一个证据。

cloudkit icloud-drive

4
推荐指数
1
解决办法
349
查看次数

无权读取 iCloud Drive 文件

我试图让我的应用程序能够打开 iCloud Drive 文件,当用户点击 Apple“文件”应用程序中的文件并选择我的应用程序以查看它时。一切都设置得很好,这样应用程序被打开,并在用户点击文件时通知。但是无法打开该文件,错误是该应用程序无权这样做。

我的应用程序将“支持打开文档到位”Info.plist设置为“是”。这意味着 URL 指向应用程序外部的 iCloud 目录,这可能是问题的原因。如果我将其设置为 NO,则 URL 是应用程序内文件的副本,并且一切正常。但该应用程序需要该设置为 YES。

我已经验证过,该文件实际上存在于手机上。

有谁知道如何使这项工作?

我的openURL:方法目前看起来像:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    NSLog(@"path=%@", url);
    NSError *error = nil;
    NSData *data = [[NSData alloc] initWithContentsOfURL:url options:0 error:&error];
    NSLog(@"error=%@", error);
}
Run Code Online (Sandbox Code Playgroud)

给出的错误是:

错误域=NSCocoaErrorDomain 代码=257“无法打开文件“Kili.gpx”,因为您没有查看它的权限。UserInfo={NSFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Kili.gpx, NSUnderlyingError=0x283ac83f0 {Error Domain=NSPOSIXErrorDomain Code=1“不允许操作”}}

ios icloud-drive

3
推荐指数
1
解决办法
946
查看次数

如何过滤NSMetadataQuery

我正在尝试创建NSMetadataQuery一个谓词。在某个时候,我可能希望收集iCloud可能在另一点上所有图像的所有视频。我什么也不想,只要搜索视频或搜索图像。不能同时使用。

我创建了以下代码:

CFStringRef whatToFilter = kUTTypeImage;
if (self.filterType == kKindVideo) {
    whatToFilter = kUTTypeVideo;
}

NSPredicate *predType = [NSPredicate predicateWithFormat:@"(%K == %@)", NSMetadataItemContentTypeKey, whatToFilter];

NSMetadataQuery *newQuery = [[NSMetadataQuery alloc] init];
[newQuery setSearchScopes:@[NSMetadataQueryUbiquitousDocumentsScope]];
newQuery.predicate = predType;
Run Code Online (Sandbox Code Playgroud)

一旦添加此谓词,newQuery结果将为零。

此查询的正确语法是什么?不要告诉我谓词也不适用于NSMetadataQuery,因为sort也不起作用。

nspredicate nsmetadataquery icloud-drive

2
推荐指数
1
解决办法
397
查看次数