问题标签 [icloud-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6645 浏览

iphone - iCloud NSUbiquitousKeyValueStore 初始同步/访问延迟 - 如何处理?

我正在使用 NSUbiquitousKeyValueStore 来存储一些应用程序设置。我的逻辑是:当我在本地保存数据时,我将它保存到 NSUbiquitousKeyValueStore 也作为备份。当我需要设置时,我会在本地读取,并且如果在本地找不到数据(例如,在重新安装应用程序之后),我只会使用 iCloud 键值存储。如果用户有多台设备共享一个 icloud id,他可以在一台设备上写入设置并将它们下载到另一台设备(我警告他要重写)。

我有一个奇怪的问题。脚步:

  1. 安装了一个应用程序并将其数据保存到 NSUbiquitousKeyValueStore。确保数据在那里。
  2. 删除了应用程序(假设数据仍保留在 iCloud 中)。
  3. 等了几分钟以防万一,然后从 Xcode 内部安装并启动了该应用程序。
  4. 尝试使用 [[NSUbiquitousKeyValueStore defaultStore] dataForKey: @"mykeyname"] 读取设置键 - 有时可以,但有时找不到键!
  5. 等了15秒,再试一次。成功。使困惑。

因此,似乎 ios 需要一些时间来使我的应用程序的远程键值存储在本地可用于 dataForKey: 调用。如果我写了这样一个系统(实际上我写了 - 前一段时间,在另一种生活中),那么在询问和接收键值数据之前显然必须有一个延迟。所以我想要一些通知说:“我们在第一次启动时完成了下载/同步键值存储”或类似的东西。

据我了解,我可以在主线程中同步使用 NSUbiquitousKeyValueStore(这对我来说很方便)。但是 [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] 返回一个有效的 url,然后我得到“找不到密钥”。所以我不能依赖它。有没有办法确保 NSUbiquitousKeyValueStore 工作并被下载?这很重要,尤其是在互联网速度较慢的情况下。

更新

将 [[NSUbiquitousKeyValueStore defaultStore] synchronize] (如苹果文档中所写)添加到 init 和 load 有点帮助。iCloud仍有许多问题。

昨天我已经成功将数据保存到手机1的键值存储并在手机2上恢复。今天我已经删除了手机2上的应用程序并尝试恢复数据。但即使 [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] 返回了有效的 URL,我调用了 [[NSUbiquitousKeyValueStore defaultStore] synchronize] 当调用 dataForKey: MY_DATA_KEY 时我得到了 nil。

当我尝试从手机 1 上的 icloud 恢复数据(应用程序仍在安装)时,它成功了,但是当我在这部手机上重新安装时,应用程序恢复不再成功。

临时解决方案是:“关闭 iCloud->Documents&Data - 关闭并打开网络 - 打开 Documents&Data”,但你应该等待几分钟,然后它应该可以工作。

所以,问题:

  1. 你对iCloud有这样的问题吗?
  2. 有什么办法可以查出数据是不可用还是只是还没有下载?
  3. iCloud 是否有任何已知的“延迟”?我听说过大约 7 秒,但这显然不是真的。
  4. 似乎当应用程序未安装时,iCloud 数据的更新非常快(几秒钟),但是当您重新安装应用程序时,icloud 需要几分钟来实现键值存储。有没有办法强制这个过程?

PS 下面是我的 CloudHelper 供您参考 - 非常简单的 c++ 类,用于向/从 iCloud 键值存储写入/读取二进制数据。它不可编译,我已经对其进行了一些调整以使其更加清晰 - 删除了与引擎相关的代码。尽管如此,如果您删除 MySystem::... 调用,它仍然可以很好地工作。除了我之前提到的。


更新 2

现在是 2016 年,Android 成为 ios 的邪恶双胞胎,人类发现了引力波,希格斯获得了诺贝尔奖,微软收购并杀死了诺基亚。但 iCloud 仍然像以前一样愚蠢。

最后,我在几个 VPS 上制作了自己的网络服务堆栈。我拒绝使用第三方服务,因为它们大多是不稳定和不可预测的。然而我需要 iCloud。因为苹果的另一个死去的孩子不起作用。密钥链。当我的游戏开始时,它的服务就死了。所以我决定在云中存储随机 UUID 以区分用户(不再有设备 ID),即使在重新安装后也是如此。但是会出什么问题呢?一切!我花了两天时间让这个愚蠢的狗屎部署没有错误,现在它时不时丢失我的数据!

谢谢苹果,谢谢,谢谢,谢谢!啦啦啦!太好啦!(马戏团的音乐声,逐渐变成哭泣声)

0 投票
2 回答
824 浏览

android - 在我的 android 应用程序中集成 iCloud

我需要集成iCloud到我的 android 应用程序中。是否可以将 iCloud 集成到我的 android 应用程序中?我在网上找到但没有得到任何解决方案或任何关于此的文章。

我知道的一件事是,在 IOS 中可以集成 iCloud。但我无法弄清楚它是否可能在android中,如果是,那么它是如何可能的..

请帮我找到这个。

0 投票
1 回答
1057 浏览

ios - 处理基于 NSMetadataQueryDidUpdateNotification 非 UIDocument 的 iCloud 文件的问题

在尝试解决这个问题时,我已经很头疼了:在我当前的应用程序中,我使用 iCloud 来存储我的文档——但我不能使用基于 UIDocument 的数据存储。所以我的方法是遵循 WWDC 2012 文章 237(高级 iCloud 文档存储)并将我的文档视为鞋盒应用程序。

当我建立一个 NSMetadataQuery 来监视 iCloud 文档文件夹中的更改以注意文件更改时,就会出现真正的问题。我已经设置了我的查询,从 NSMetadataQueryDidFinishGatheringNotification 的观察者开始,当它触发时,我为查询启用更新并为 NSMetadataQueryDidUpdateNotification 设置了一个观察者。后者仅对一个文件更改有效,我没有找到如何让它重复触发以对相同或其他文件进行后续更改。以下是一些代码部分:

这里的任何建议都非常感谢。

它的真正作用:

  1. 当我直接(通过覆盖)修改 iCloud 文档容器中的文件时 - 什么都没有,查询不会触发。

  2. 当我通过 setUbiquitous:NO 序列修改文件时,写入本地文件 setUbiquitous:YES 查询会触发一次,我检测到更改,当我再次更改同一个文件时,不会调用查询处理程序。

因此,尽管我在 Apple 文档中发现写入 iCloud 文件的方式(如 1. 以上)适用于新文件,但似乎也有必要修改现有文件。

但是,无论如何,我怎样才能让查询机制重复运行呢?

干杯...

0 投票
2 回答
7167 浏览

ios - 如何处理(MyApp正在保存的文档)文件?

我的应用程序使用 iCloud。我的应用程序将其所有数据存储在 1 个文档中,并且永远不应超过 1 个文档。但是,有时我的 NSMetadataQuery 会返回 2 个文档:

0: Documents/(A Document being saved bt MyApp)/MyDoc.ext
1: Documents/MyDoc.ext

这主要发生在用户在 iOS 设备重启后不久打开应用程序时。

在检查这 2 个文档时,文档 0 是具有最新更新的文档,所以这就是我们想要的。

这个“正在保存的文档”最终出现并成为最新文档的原因是什么,我该如何正确处理,因此 Documents/MyDoc.ext 将是具有最新内容的文档。

谢谢,-r

0 投票
0 回答
2217 浏览

ios - 无法打开数据库 - iCloud / Core Data

我正在尝试设置我的 Core Data 数据库以与 iCloud 一起使用,我了解基本知识并遵循了一个关于如何设置它的好教程,有人知道可能出了什么问题吗?

我收到无法连接数据库的错误:

Unresolved error: Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa error 256.)" UserInfo=0x1c5de2a0 {NSUnderlyingException=unable to open database file, NSSQLiteErrorDomain=14}, { NSSQLiteErrorDomain = 14; NSUnderlyingException = "unable to open database file"; }

这是我返回持久存储的代码:

编辑

这是我的 managedObjectModel 方法(CategoryModel 是 .xcdatamodeld 的名称):

编辑 2

用日志编辑:

编辑 3

当我尝试从 developer.icloud.com 下载文件时,它不会下载,并且会向 Safari 控制台发送一条消息Failed to load resource: the server responded with a status of 409 (Conflict)

上传文件时,Safari 控制台会发出几个警告:

编辑[现在是什么数字]

记录持久存储时,NSLog(@"MOC: %@", self.managedObjectContext.persistentStoreCoordinator.persistentStores);

我得到以下输出:

所以我猜测错误unable to connect to database被调用是因为只有本地持久存储存在

新错误

编辑 - 目录错误

我认为问题在于未创建目录。

以下日志表明在尝试传输文件时目录不存在。我想我应该能够解决这个问题,iCloud 可以工作:

0 投票
1 回答
2242 浏览

iphone - iphone iCloud - 我们如何将图片从我们的应用程序上传到 iCloud。

我是 icloud 的新手。我正在开发一个应用程序。在我的应用程序中,我想将图片备份到 iCloud 服务器。但我不想让这些图像回到我的 iPhone。

这可能吗。怎么可能呢。我是 iCloud 新手。请帮我。任何好的教程或演示代码。

提前谢谢了。

0 投票
1 回答
1756 浏览

ios - iCloud 同步 plist 文件

我不擅长编程,这是我的第一个应用程序。我使用本教程制作了应用程序:http: //mobile.tutsplus.com/tutorials/iphone/building-a-shopping-list-application-from-scratch-part-1/ ?search_index=4 http://mobile。 tutsplus.com/tutorials/iphone/building-a-shopping-list-application-from-scratch-part-2/?search_index=2

所有数据都存储在 plist 文件中。一切正常。但现在我想让 icloud 同步,我试图找到解决方案,但大多数教程都是关于如何同步核心数据或只是 NSUserDefaults。

您能否在 github 上显示一些我可以使用的代码或一些教程“如何同步 plist 文件”。

0 投票
2 回答
875 浏览

icloud - 在云端调试 iCloud 键值数据

我一直在努力想弄清楚如何确定给定应用程序的键值存储中的实际内容。使用 api 检测数据对我来说似乎很可疑,因为我害怕得到误报。此外,我不得不猜测可能还有什么(即来自应用程序的早期版本或其他版本)。据我所知,开发者测试网站只显示云中的文件,而不是键值存储。有谁知道如何访问这些数据,或者本地 .plist 文件存储在文件系统的哪个位置(我假设它无论如何都在 .plist 中)?

0 投票
1 回答
434 浏览

icloud - iCloud 显示集为我提供了仅填写权利无法得到的东西

当您创建应用程序的 iPhone/iPad 版本以及同一应用程序的 OS X 版本时,您可能希望所有不同的设备通过 iCloud 共享文档或键值数据。这可以通过在所有应用程序的 iCloud 权利中放置相同的捆绑标识符来轻松实现。既然如此,我为什么要使用 iCloud 显示集。

我以前在这里看到过这个问题,但我认为他们没有得到正确的回答。这个问题问了同样的问题,但答案只是证实了显示集是为了允许多个应用程序访问同一个 iCloud 商店。我们已经可以在没有显示装置的情况下做到这一点。

有谁知道通过展示装置来做这件事是否有区别或好处,或者它是否只是一种替代方法?

0 投票
2 回答
22616 浏览

icloud-api - 我可以在 Web 应用程序中使用 iCloud API 吗?

我是 iCloud API 的新手。我想知道我们可以在网络应用程序中使用 iCloud API 吗?是否可以通过网络访问 iCloud API?