6

私は自分のアプリケーションにiCloudサポートを追加しようとしており、Apple独自のiCloudデザインガイドに従っています。ガイドには、を呼び出してユーザーの資格情報を確認する必要があると書かれています[NSFileManager ubiquityIdentityToken]。また[NSFileManager URLForUbiquityContainerIdentifier:]、アプリのユビキタスコンテナを利用できるようにするためにチェックする必要があるとも書かれています。

私が遭遇している問題は、そうではないのubiquityIdentityTokenに戻っnilてくるということですURLForUbiquityContainerIdentifier:。後者は正しいURLを返すため、プロビジョニングプロファイルと資格が正しく設定されていると想定しています。また、アプリを実行しているデバイスでiCloudが有効になっていて、ログインしていて、ドキュメントとデータが有効になっていることを再確認しました。

一方の方法がiCloud接続がないことを意味し、もう一方の方法が存在するのはなぜですか?

更新:を呼び出したubiquityIdentityTokenを呼び出すと値が返されること に気付きました。それでも、アプリがユビキタスコンテナの代わりにKey-Valueストアを使用している場合、どのように機能しますか?URLForUbiquityContainerIdentifier:ubiquityIdentityToken

4

1 に答える 1

5

ubiquityIdentityTokenは、ユーザーがicloudにログインしているかどうかをアプリがチェックできるようにするためにAppleによって導入された新しいものです。これは、アプリのアクティブ化の間に同じユーザーがログインしているかどうか、またはユーザーが実際にログインしているかどうかなどを確認するための非常に高速な方法です。

メインスレッドで実行でき、非常に高速です。これにより、アプリのロジックについて決定を下すことができます。

注意すべき重要な点は、メインスレッドで実行でき、非常に高速であるということです。

通常、このトークンを取得してアプリに保存し、アプリがバックグラウンドから戻ってきたときに再度比較します。

そうすれば、同じユーザーなどであることを確認できます。

これがnilを返す場合、それはユーザーがiCloudにログインしていないことを意味します。

以前は、ユーザーがログインしているかどうかを確認するために別の呼び出しがありましたが、別のスレッドで非同期に実行する必要がありました。彼らは、ユーザーがiCloudにログインし、アプリを一時停止し、別のアカウントにログインして、アプリに戻ってくる状況を見たと思います。これにより、これらのことを非常に効率的かつ簡単にチェックできます。ただし、トークンにはユーザーを特定できる情報はありません。

于 2012-12-07T21:14:35.570 に答える