問題タブ [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 へのより効率的なバックアップを可能にする必要があると述べました。

最近のテストでは、[あなたのアプリ] はドキュメント フォルダーにかなりの量のデータを保存しているようです。

iCloud バックアップは各ユーザーの iOS デバイスに対して Wi-Fi 経由で毎日実行されるため、アプリによって保存されるデータの量を最小限に抑えて、可能な限り最高のユーザー エクスペリエンスを確保することが重要です。

Instapaper で有名なMarco Arment は、この問題をよく理解しています。つまり、ダウンロード可能なファイルの推奨される保存場所は /Library/Caches です。ただし、問題は、デバイスのストレージが不足していると OS が判断すると、/tmp と /Caches の両方が「消去」される可能性があることです。アプリがクリーンアップされると、アプリによってダウンロードされ、ユーザーによって保存されたデータは失われます。当然、ユーザーは Apple ではなくあなたを責めます。

何をすべきか?

0 投票する
3 に答える
10249 参照

iphone - 他のユーザーとの iCloud 共有

私の知る限り、iCloud は個人用ストレージのようなもので、自分の Apple ID を使用します。私が聞きたいのは、ユーザーがたとえば画像を保存して他のユーザーと共有することは可能ですか?

つまり、DropBox のようなものです。ファイルを DropBox アカウントにアップロードすると、他のユーザーがファイルをダウンロードできる URL が表示されます。

iCloudにはこのような機能がありますか?

0 投票する
2 に答える
3242 参照

cocoa - NSPersistentStoreDidImportUbiquitousContentChangesNotification を取得していません (コード サンプル付き)

コアデータでiCloudを使用する方法を学ぼうとしています。私の目標は、mac/ios で単一のデータベース ファイルを同期することです。システム環境設定-> iCloud->管理で確認できるように、私のMacアプリとiOSアプリの両方がiCloudを更新しているようです... ios / macアプリで何かを変更するたびに、Unknownという名前のアプリがどんどん大きくなっています。つまり、アプリが変更をクラウドに保存していると思います。問題は、NSPersistentStoreDidImportUbiquitousContentChangesNotification他のプラットフォームで何かを変更したときに取得できないことです。

私のコードがあります(Macアプリ):

0 投票する
1 に答える
1919 参照

ios - Core Data データベースの iCloud 同期を有効にするにはどうすればよいですか?

iCloud を使用して、デバイス間でアプリの SQLite Core Data ストアを同期させたいと考えています。今のところ、ユーザーが Dropbox を使用して SQLite ファイルを手動で同期できるようにしていますが、それはユーザーにとって面倒です。自動化してほしい。

この機能を実現するためのベスト プラクティスは何ですか? 特別なプロビジョニング プロファイルは必要ですか?

UIManagedDocument を使用するように Core Data データベースをセットアップする必要があることをどこかで読みましたが、これを行う方法を明確に説明している場所が見つかりませんでした。助言がありますか?

0 投票する
2 に答える
7588 参照

iphone - iCloud同期を無効にする

アプリケーションデータ(ドキュメントフォルダの内容)がiCloudに同期されないようにする方法はありますか?(iOS5の新しい問題のためにキャッシュディレクトリに保存する場合を除きます私のアプリケーションはデバイスにデータを保存する必要がありますが、セキュリティ上の理由から、サードパーティ(Appleを含む)と同期することはできません。

0 投票する
4 に答える
8387 参照

iphone - iPhone と Webapp は iCloud 経由で同期 ??

iCloudを介してiOSデバイスとWebアプリを同期できるかどうかを確認するだけです。現在、iOS アプリを構築しており、iCloud を使用してすべてのデバイス間で同期することを検討しており、Web アプリ コンポーネントも必要です。iCloudは、すべてを同期するためのモジュールとして使用するのに最適です.

それが可能かどうか誰でも知っていますか?

0 投票する
3 に答える
1662 参照

iphone - iCloudは、ユーザーがアプリ内消耗品を「盗む」ことを可能にします

私のアプリでは、ユーザーはCoreDataに保存されている消耗品(スーツケースなど)を購入します。ユーザーが最初にアプリをインストールするとき、私は彼らに開始するための景品を与えます。アプリは、少なくとも1つのスーツケースが設定されていないと機能しません。

しかし、ユーザーがアプリをiPhoneにインストールしてからiPadにインストールし、2つを同期すると、スーツケースが2つになります。また、いずれかのデバイスでアプリをアンインストールしてから再インストールして同期すると、追加のアプリが追加され、無期限に実行できます。

私は2つの解決策を見ることができますが、どれも正しくないようです。

  1. ユーザーが最初にiCloudと同期するときに、NSUbiquityKeyValueStoreに値を追加します。最初の起動時にこの値を確認してください。ゼロの場合は景品を作成し、そうでない場合はデータを同期します。しかし、これは問題を引き起こします。ユーザーが最初の起動時に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 version,webkitVersion,browser={}; userAgent=(userAgent||navigator.userAgent).toLowerCase();language=language||navigator.language||navigator.browserLanguage; version=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?バージョン:0; browser.isIE=!!browser.msie;browser.isIE8OrLower=!!(browser.msie&&parseInt(browser.msie,10)<=8); browser.mozilla=/mozilla/.test(userAgent)&&!/(互換性|ウェブキット|msie)/. テスト (userAgent)?バージョン: 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(SC_benchmarkPreloadEvents の種類!=="未定義"){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":"他のプラットフォーム"; style=document.documentElement.style;shadows=(style.MozBoxShadow!==未定義)||(style.webkitBoxShadow!==未定義)||(style.oBoxShadow!==未定義)||(style.boxShadow!==未定義); borderRad=(style.MozBorderRadius!==未定義)||(style.webkitBorderRadius!==未定義)||(style.oBorderRadius!==未定義)||(style.borderRadius!==未定義); classNames=el.className?el.className.split(" "):[];if(shadows){classNames.push("box-shadow") }if(borderRad){classNames.push("border-rad") }classNames.push(ブラウザ);if(browser==="chrome"){classNames.push("サファリ")}classNames.push(プラットフォーム); "/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がnilであることを示しています。

iPhoneデバイスなしでiCloudを使用できますか?

0 投票する
5 に答える
52946 参照

iphone - iCloud の基本とコード サンプル

初心者として、iCloudに苦労しています。いくつかのサンプルがありますが、通常は非常に詳細です (開発者フォーラムには、iCloud と CoreData 用のサンプルがあり、これは膨大です)。Appleドキュメントは問題ありませんが、全体像はまだわかりません。これらの質問のいくつかは非常に基本的なものですが、おそらく簡単に答えることができます。

コンテキスト:非常に単純な iCloud アプリを実行しています (以下の完全なサンプル コード)。ユーザーに表示される UITextView は 1 つだけで、ユーザーの入力は text.txt というファイルに保存されます。

ここに画像の説明を入力

txt ファイルはクラウドにプッシュされ、すべてのデバイスで利用できるようになります。完全に動作しますが、:

主な問題: iCloud を使用していないユーザーはどうなりますか?

アプリを起動すると (以下のコードを参照)、ユーザーが iCloud を有効にしているかどうかを確認します。iCloud が有効になっている場合は、すべて問題ありません。アプリは先に進み、クラウドで text.txt を探します。見つかった場合は、それをロードしてユーザーに表示します。クラウドに text.txt が見つからない場合、新しい text.txt が作成され、それがユーザーに表示されます。

ユーザーが iCloud を有効にしていない場合、何も起こりません。iCloud 以外のユーザーが引き続きテキスト アプリを使用できるようにするにはどうすればよいですか? それとも単にそれらを無視しますか? 非 iCloud ユーザー用に別の関数を作成する必要がありますか? つまり、ドキュメント フォルダから text.txt をロードするだけの関数ですか?

アップルは次のように書いています

アプリのサンドボックス内の他のすべてのファイルを扱うのと同じように、iCloud 内のファイルを扱います。

ただし、私の場合、「通常の」アプリサンドボックスはもうありません。それは雲の中にあります。それとも、常に最初にディスクから text.txt をロードしてから、最新のものがないか iCloud で確認しますか?

関連問題: ファイル構造 - サンドボックス vs. クラウド

おそらく私の主な問題は、iCloud がどのように機能するべきかについての根本的な誤解です。UIDocument の新しいインスタンスを作成するときは、2 つのメソッドを上書きする必要があります。最初- (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 の別のコピーを保持する必要がありますか? これは私のデータ構造を混乱させているように感じます...クラウドに1つのtext.txtがあり、デバイスのiCloudサンドボックスに1つ(オフラインでも機能します)、3つ目が古き良きのサンドボックスにあります私のアプリ...


マイ コード: シンプルな iCloud サンプル コード

これは、開発者フォーラムと WWDC セッション ビデオで見つけた例に大まかに基づいています。必要最小限まで削ぎ落としました。私の MVC 構造が適切かどうかはわかりません。モデルは理想的ではない AppDelegate にあります。より良いものにするための提案は大歓迎です。


編集: 主な質問を抽出して [ここ] に投稿しようとしました。4


概要:

概要

クラウドから text.txt をロードする最も重要な部分:


UI ドキュメント


ビューコントローラー