問題タブ [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に保存します。設定が必要な場合は、ローカルで読み取り、ローカルでデータが見つからない場合(たとえば、アプリを再インストールした後)にのみiCloudKey-Valueストアを使用します。ユーザーが1つのicloudIDを共有する複数のデバイスを持っている場合、ユーザーは1つのデバイスに設定を書き込んで、別のデバイスにダウンロードできます(書き換えについて警告します)。

奇妙な問題があります。手順:

  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](Appleドキュメントに記載されている)をinitとloadに追加すると、少し役に立ちました。それでもiCloudには多くの質問があります。

昨日、電話1のKey-Valueストアにデータを正常に保存し、電話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はKey-Valueストアを実現するのに数分かかります。このプロセスを強制する方法はありますか?

PS 以下は、参考のために私のCloudHelperです-iCloudKey-Valueストアとの間でバイナリデータを読み書きするための非常に単純なc++クラスです。コンパイル可能ではありません。より明確にするために、SOに合わせて調整しました。エンジン関連のコードを削除しました。それでも、MySystem :: ...呼び出しを削除すると、かなりうまく機能します。私が前に述べたことを除いて。


更新2

2016年です。AndroidはiOSの邪悪な双子になり、人類は重力波を発見し、Higgsは彼のノーベルを受け取り、MicrosoftはNokiaを買収して殺害しました。しかし、iCloudはまだそれがそうであったのと同じくらい愚かです。

最後に、いくつかのVPSで独自のネットワークサービスのスタックを作成しました。サードパーティのサービスのほとんどは不安定で予測できないため、使用を拒否しました。それでも私はiCloudが必要です。アップルのもう一人の死んだ子供は働かないからです。SecKeyChain。私のゲームが始まると、そのサービスは停止します。そこで、再インストール後もユーザーを区別するためにランダムなUUIDをクラウドに保存することにしました(デバイスIDはもうありません)。しかし、何がうまくいかない可能性がありますか?すべての!このばかげたs*itをエラーなしでデプロイするために2日間を費やしましたが、今ではデータが失われることがあります。

ありがとうアップル、ありがとう、ありがとう、ありがとう!ラララ!ヒップヒップフーレイ!(サーカス音楽の音、しだれに消えていく)

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

android - 私のAndroidアプリケーションへのiCloudの統合

iCloudAndroid アプリケーションに統合する必要があります。私の Android アプリケーションに iCloud を統合することは可能ですか? ネットで見つけましたが、これに関する解決策や記事はありません。

私が知っていることの1つは、IOSでiCloudを統合できることです。しかし、私はそれがアンドロイドで可能かどうかを理解することはできません。

これを見つけるのを手伝ってください。

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

ios - NSMetadataQueryDidUpdateNotification 非 UIDocument ベースの iCloud ファイルの処理に関する問題

これを解決しようとすると、すでに頭痛の種になっています。現在のアプリでは、iCloud を使用してドキュメントを保存していますが、データに UIDocument ベースのストレージを使用することはできません。そこで私のアプローチは、WWDC 2012 の第 237 条 (高度な iCloud ドキュメント ストレージ) に従い、ドキュメントを靴箱アプリのように扱うことでした。

実際の問題は、NSMetadataQuery を作成して iCloud ドキュメント フォルダの変更を監視し、ファイルの変更に注意するときに発生します。クエリをセットアップし、NSMetadataQueryDidFinishGatheringNotification のオブザーバーで開始します。起動したら、クエリの更新を有効にし、NSMetadataQueryDidUpdateNotification のオブザーバーをセットアップします。後者は 1 回のファイル変更に対して 1 回しか機能せず、同じファイルまたは他のファイルのその後の変更に対して繰り返し起動する方法がわかりませんでした。ここにいくつかのコード部分があります:

ここでのアドバイスは本当に大歓迎です。

それが実際に行うこと:

  1. iCloud ドキュメント コンテナー内のファイルを (上書きによって) 直接変更しても、クエリは実行されません。

  2. setUbiquitous:NO、ローカル ファイルへの書き込み、setUbiquitous:YES のシーケンスでファイルを変更すると、クエリが 1 回起動し、変更が検出され、同じファイルを再度変更すると、クエリ ハンドラが呼び出されません。

したがって、上記の 1. のような iCloud ファイルへの書き込み方法が NEW ファイルに適用されることを Apple ドキュメントで確認したにもかかわらず、既存のファイルを変更する必要があるようです。

しかし、とにかく、クエリ メカニズムを繰り返し実行するにはどうすればよいでしょうか。

乾杯...

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

ios - (MyAppによって保存されているドキュメント)ファイルを処理する方法は?

私のアプリケーションはiCloudを使用しています。私のアプリケーションはすべてのデータを1つのドキュメントに保存し、この1つのドキュメントを超えることはできません。ただし、NSMetadataQueryが2つのドキュメントを返すことがあります。

0:ドキュメント/(MyAppで保存されているドキュメント)/MyDoc.ext1
:ドキュメント/MyDoc.ext

これは主に、iOSデバイスを再起動した直後にユーザーがアプリを開いたときに発生します。

これらの2つのドキュメントを調べると、最新の更新が行われているのはドキュメント0であるため、これが必要です。

この「ADocumentBeingSaved」が最後に表示されて最新のものになる理由と、これを正しく処理するにはどうすればよいですか。したがって、Documents/MyDoc.extが最新のコンテンツになります。

ありがとう、-r

0 投票する
0 に答える
2217 参照

ios - データベースを開けません - iCloud / Core Data

iCloud で使用する Core Data データベースをセットアップしようとしています。基本的なことは理解しており、セットアップ方法に関するすばらしいチュートリアルに従いました。

データベースに接続できなかったというエラーが表示されます:

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 投票する
1 に答える
434 参照

icloud - 資格を入力するだけでは得られない、iCloud ディスプレイ セットから得られるものは何ですか

iPhone/iPad バージョンのアプリを作成し、同じアプリの OS X バージョンも作成する場合、おそらく、すべての異なるデバイスでドキュメントまたはキーと値のデータを iCloud 経由で共有する必要があります。これは、すべてのアプリの iCloud 資格に同じバンドル ID を入れることで簡単に実現できます。これが事実であるため、なぜiCloud Display Setsを使用したいのでしょうか。

以前にここでこの質問が出されたのを見たことがありますが、私の意見では、適切に回答されていませんでした。この質問は同じ質問をしましたが、答えはディスプレイセットが複数のアプリが同じiCloudストアにアクセスできるようにするためのものであることを確認しただけです. ディスプレイセットがなくても、すでにそれを行うことができます。

ディスプレイセットを介してそれを行うことに違いや利点があるかどうか、またはそれが単なる代替方法であるかどうか、誰かが知っていますか?