问题标签 [icloud]

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 投票
2 回答
7780 浏览

iphone - iCloud + iPhone Documents 文件夹中的媒体存储

我和许多开发人员一样,最近收到了一封来自 Apple 的电子邮件,其中说我们应该将我们的数据从文档目录移动到另一个文件夹,以便更简化地备份到 iCloud。

在最近的测试中,[您的应用程序] 似乎在其 Documents 文件夹中存储了大量数据。

由于每天都会通过 Wi-Fi 为每位用户的 iOS 设备执行 iCloud 备份,因此通过最大限度地减少应用程序存储的数据量来确保尽可能好的用户体验非常重要。

以 instapaper 闻名的Marco Arment对这个问题有很好的看法,即存储可下载文件的推荐位置是 /Library/Caches。然而,问题是 /tmp 和 /Caches 都可以在操作系统确定设备存储空间不足时被“清理”。如果您的应用程序被清理,那么您的应用程序下载并由您的用户存储的数据就会消失。自然,用户会责怪你而不是苹果。

该怎么办?

0 投票
3 回答
10249 浏览

iphone - 其他用户之间的 iCloud 共享

据我所知,iCloud 就像一个个人存储,您使用自己的 Apple ID 来存储它。我想问的是,用户是否可以存储例如图像并与其他用户共享?

这意味着类似于 DropBox。您将文件上传到您的 DropBox 帐户,然后会有一个 URL 允许其他人下载该文件。

iCloud有这种功能吗?

0 投票
2 回答
3242 浏览

cocoa - 我没有收到 NSPersistentStoreDidImportUbiquitousContentChangesNotification (带有代码示例)

我正在尝试学习如何将 iCloud 与 coredata 一起使用。我的目标是在 mac/ios 上同步单个数据库文件。我的 mac 和 iOS 应用程序似乎都在更新 iCloud,因为我可以在 System Preferences->iCloud->Manage 下看到它……有一个名为 Unknown 的应用程序,每次我在 ios/mac 应用程序上更改某些内容时,它都会变得越来越大。所以这让我觉得这些应用程序正在将更改存储到云中。NSPersistentStoreDidImportUbiquitousContentChangesNotification问题是,当我在另一个平台上更改某些内容时,我没有得到。

这是我的代码(mac应用程序):

0 投票
1 回答
1919 浏览

ios - 如何为我的 Core Data 数据库启用 iCloud 同步?

我想让我的应用在使用 iCloud 的设备之间同步其 SQLite Core Data 存储。现在我让用户使用 Dropbox 手动同步他们的 SQLite 文件,但这对用户来说很麻烦。我希望它是自动的。

实现此功能的最佳实践是什么?我需要任何特殊的配置文件吗?

我在某处读到我需要设置我的核心数据数据库以使用 UIManagedDocument,但我还没有找到任何地方可以清楚地解释如何做到这一点。有什么建议么?

0 投票
2 回答
7588 浏览

iphone - 禁用 iCloud 同步

有没有办法阻止您的应用程序数据(文档文件夹内容)同步到 iCloud?(由于 iOS5 中的新问题,因此将其存储在 Caches 目录)我的应用程序需要在设备上存储数据,但出于安全原因,它不能同步到任何第三方(包括 Apple)。

0 投票
4 回答
8387 浏览

iphone - iPhone 和 Webapp 通过 iCloud 同步 ??

只是检查是否可以通过 iCloud 同步 iOS 设备和网络应用程序。目前我们已经构建了一个 iOS 应用程序,正在考虑使用 iCloud 在所有设备之间进行同步,并且还想要一个 Web 应用程序组件。iCloud 非常适合用作将所有内容同步在一起的模块。

有谁知道这是否可能?

0 投票
3 回答
1662 浏览

iphone - iCloud 让用户“窃取”应用内消耗品成为可能

在我的应用程序中,用户购买存储在 Core Data 中的消耗品,比如手提箱。当用户第一次安装应用程序时,我给他们一个免费赠品让他们开始使用。如果没有设置至少一个手提箱,该应用程序将无法运行。

但是如果用户在他们的 iPhone 和 iPad 上安装应用程序并同步两者,他们现在有 2 个手提箱。如果他们在任一设备上卸载该应用程序,然后重新安装并同步它,他们就会获得一个额外的应用程序,并且可以无限期地这样做。

我可以看到两种解决方案,但似乎都不对:

  1. 当用户第一次与 iCloud 同步时,向 NSUbiquityKeyValueStore 添加一个值。首次启动时检查此值。如果为 nil,则创建免费赠品,如果不是,则同步数据。但这会产生一个问题。如果用户在首次启动时禁用了 iCloud 或没有互联网连接怎么办。该应用程序将创建免费赠品,然后当 iCloud 可用时,同步副本,他们可以随意多次执行此操作。

  2. 以某种方式匹配每个应用程序上的默认项目。我有匹配 objectID 或时间戳的想法,但这些会有所不同,我不确定如何处理它。

有人知道我能做些什么吗?

编辑:

使用预打包的数据库加上 migratePersistentStore:toURL:options:withType:error: 似乎是要走的路。如果对我有用,将发布带有代码的答案。

0 投票
3 回答
7516 浏览

html - 我有一个 iCloud 文件的公共 URL,如何在 iOS 中获取直接下载链接?

我能够为 iCloud 文件生成公共 URL。例如https://www.icloud.com/documents/dl/?p=3&t=BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA

从浏览器访问这样的 URL,我会看到一个登录页面,然后文件会自动下载。美好的。

但是,我希望能够从我的 iOS 应用程序(使用 NSURLConnection)下载这个文件。我怎样才能做到这一点?也许... a) 处理 html 标头以某种方式确定直接 URL?b)拦截触发浏览器下载的重定向/刷新?c)以某种方式模仿浏览器以触发下载?

谢谢

PS。请给我白痴的答案-我对html等一无所知。

这是我为上面的间接 URL 获得的 html 响应:

var SC_benchmarkPreloadEvents={headStart:new Date().getTime()}; -->iCloud - 正在加载 ...window.SC=window.SC||{MODULE_INFO:{},LAZY_INSTANTIATION:{}};SC.buildMode="production"; SC.buildNumber="1FCS22.32292";SC.buildLocale="en-us";String.preferredLanguage="en-us";window.SC=window.SC||{MODULE_INFO:{},LAZY_INSTANTIATION:{}} ;SC._detectBrowser=function(userAgent,language){var 版本,webkitVersion,browser={}; userAgent=(userAgent||navigator.userAgent).toLowerCase();语言=语言||navigator.language||navigator.browserLanguage; 版本=browser.version=(userAgent.match(/.*(?:rv|chrome|webkit|opera|ie)/: ([ );]|$)/)||[])[1]; webkitVersion=(userAgent.match(/webkit/(.+?) /)||[])[1];browser.windows=browser.isWindows=!!/windows/.test(userAgent); browser.mac=browser.isMac=!!/macintosh/. test(userAgent)||(/mac os x/.test(userAgent)&&!/like mac os x/.test(userAgent)); browser.lion=browser.isLion=!!(/mac os x 10_7/.test(userAgent)&&!/like mac os x 10_7/.test(userAgent)); browser.iPhone=browser.isiPhone=!!/iphone/.test(userAgent);browser.iPod=browser.isiPod=!!/ipod/.test(userAgent); browser.iPad=browser.isiPad=!!/ipad/.test(userAgent);browser.iOS=browser.isiOS=browser.iPhone||browser.iPod||browser.iPad; browser.android=browser.isAndroid=!!/android/.test(userAgent);browser.opera=/opera/.test(userAgent)?version:0; browser.isOpera=!!browser.opera;browser.msie=/msie/.test(userAgent)&&!browser.opera?version:0; browser.isIE=!!browser.msie;browser.isIE8OrLower=!!(browser.msie&&parseInt(browser.msie,10)<=8); browser.mozilla=/mozilla/.test(userAgent)&&!/(compatible|webkit|msie)/. 测试(用户代理)?版本:0;browser.isMozilla=!!browser.mozilla;browser.webkit=/webkit/.test(userAgent)?webkitVersion:0; browser.isWebkit=!!browser.webkit;browser.chrome=/chrome/.test(userAgent)?version:0; browser.isChrome=!!browser.chrome;browser.mobileSafari=/apple.*mobile/.test(userAgent)&&browser.iOS?webkitVersion:0; browser.isMobileSafari=!!browser.mobileSafari;browser.iPadSafari=browser.iPad&&browser.isMobileSafari?webkitVersion:0; browser.isiPadSafari=!!browser.iPadSafari;browser.iPhoneSafari=browser.iPhone&&browser.isMobileSafari?webkitVersion:0; browser.isiPhoneSafari=!!browser.iphoneSafari;browser.iPodSafari=browser.iPod&&browser.isMobileSafari?webkitVersion:0; browser.isiPodSafari=!!browser.iPodSafari;browser.isiOSHomeScreen=browser.isMobileSafari&&!/apple.*mobile.*safari/. 测试(用户代理);browser.safari=browser.webkit&&!browser.chrome&&!browser.iOS&&!browser.android?webkitVersion:0; browser.isSafari=!!browser.safari;browser.language=language.split("-",1)[0];browser.current=browser.msie?"msie":browser.mozilla?"mozilla":browser. chrome?"chrome":browser.safari?"safari":browser.opera?"opera":browser.mobileSafari?"mobile-safari":browser.android?"android":"unknown"; 返回浏览器};SC.browser=SC._detectBrowser();if(typeof SC_benchmarkPreloadEvents!=="undefined"){SC.benchmarkPreloadEvents=SC_benchmarkPreloadEvents; SC_benchmarkPreloadEvents=undefined}else{SC.benchmarkPreloadEvents={headStart:new Date().getTime()} }SC.setupBodyClassNames=function(){var el=document.body;if(! el){return}var browser,platform,shadows,borderRad,classNames,style; browser=SC.browser.current;platform=SC.browser.windows?"windows":SC.browser.mac?"mac":"other-platform"; style=document.documentElement.style;shadows=(style.MozBoxShadow!==undefined)||(style.webkitBoxShadow!==undefined)||(style.oBoxShadow!==undefined)||(style.boxShadow!==不明确的); borderRad=(style.MozBorderRadius!==undefined)||(style.webkitBorderRadius!==undefined)||(style.oBorderRadius!==undefined)||(style.borderRadius!==undefined); classNames=el.className?el.className.split(" "):[];if(shadows){classNames.push("box-shadow") }if(borderRad){classNames.push("border-rad") }classNames.push(browser);if(browser==="chrome"){classNames.push("safari") }classNames.push(platform); "/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-no-repeat@2x.png","/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat -x@2x.png","/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat-y@2x.png","/applications/documents/download/en-us/1FCS22 .32292/stylesheet-no-repeat@2x.png","/applications/documents/download/en-us/1FCS22.32292/stylesheet-repeat-x@2x.png"] }else{styles=["/applications /documents/download/en-us/1FCS22.32292/stylesheet-packed.css"]; SC.APP_IMAGE_ASSETS=["/applications/documents/sproutcore/desktop/en-us/1FCS22.32292/stylesheet-no-repeat.png","/applications/documents/coreweb/views/en-us/1FCS22.32292/ stylesheet-no-repeat.png","/applications/documents/sproutcore/ace/en-us/1FCS22.

0 投票
3 回答
13746 浏览

ios5 - 在 iOS 模拟器中使用 iCloud

在我的应用程序中,当我尝试在 iOS 模拟器中运行代码时:

它表明 iCloudURL 为零。

我们可以在没有 iPhone 设备的情况下使用 iCloud 吗?

0 投票
5 回答
52946 浏览

iphone - iCloud 基础知识和代码示例

作为初学者,我在 iCloud 上苦苦挣扎。有一些示例,但它们通常非常详细(在开发者论坛上有一个用于 iCloud 和 CoreData 的大量示例)。苹果文档还可以,但我仍然看不到大局。所以请耐心等待,其中一些问题非常基础,但可能很容易回答。

上下文:我有一个非常简单的 iCloud 应用程序正在运行(下面的完整示例代码)。只有一个 UITextView 显示给用户,他/她的输入保存在一个名为 text.txt 的文件中。

在此处输入图像描述

txt 文件被推送到云端并可供所有设备使用。完美运行,但是:

主要问题:不使用 iCloud 的用户怎么办?

当我启动我的应用程序(见下面的代码)时,我会检查用户是否启用了 iCloud。如果启用了 iCloud,一切都很好。该应用程序继续并在云中查找 text.txt。如果找到,它将加载并显示给用户。如果在云中找不到 text.txt,它将简单地创建一个新的 text.txt 并将其显示给用户。

如果用户没有启用 iCloud,什么都不会发生。如何让非 iCloud 用户仍然可以使用我的文本应用程序?还是我只是忽略它们?我需要为非 iCloud 用户编写单独的函数吗?即,我只需从文档文件夹中加载 text.txt 的功能?

苹果写道

对待 iCloud 中的文件就像对待应用沙箱中的所有其他文件一样。

但是,就我而言,不再有“正常”的应用程序沙箱。它在云端。还是我总是先从磁盘加载我的 text.txt,然后再通过 iCloud 检查是否有更新的内容?

相关问题:文件结构 - 沙盒与云

也许我的主要问题是对 iCloud 应该如何工作的根本误解。当我创建一个 UIDocument 的新实例时,我将不得不覆盖两个方法。首先- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError从云中获取文件,然后-(id)contentsForType:(NSString *)typeName error:(NSError **)outError将文件获取到云中。

我是否必须合并单独的函数,这些函数也会将 text.txt 的本地副本保存到我的沙箱中?这对非 iCloud 用户有用吗?据我了解 iCloud,它会自动保存 text.txt 的本地副本。因此,我不需要将任何内容保存到我的应用程序的“旧”沙箱中(即,它曾经在旧的、前 iCloud 时代)。现在,我的沙箱完全是空的,但我不知道这是否正确。我应该在其中保留另一份 text.txt 吗?这感觉就像把我的数据结构弄得一团糟……因为云中有一个 text.txt,我设备上的 iCloud 沙箱中有一个(即使我离线也可以工作),第三个在旧的沙箱中我的应用...


我的代码:一个简单的 iCloud 示例代码

这大致基于我在开发者论坛和 WWDC 会议视频中找到的示例。我把它剥离到最低限度。我不确定我的 MVC 结构是否良好。该模型位于 AppDelegate 中,这并不理想。欢迎提出任何使它变得更好的建议。


编辑:我试图提取主要问题并将其发布 [here]。4


概述:

概述

从云端加载 text.txt 的最重要部分:


用户界面文档


视图控制器