2011-11-11 14 views
11

iCloudとアプリケーションを統合する際に問題が発生しました。NSUbiquitousKeyValueStoreエラー:有効なcom.apple.developer.ubiquity-kvstore-identifierエンタイトルメント

私はiCloudの可用性をテストしたとき、私は私が実行しようとすると、機能

NSURL *iCloudURL = [fileManager URLForUbiquityContainerIdentifier:@"AppID"]; 

が、右のこの後の成功を受け取る:

NSUbiquitousKeyValueStore *iCloudStore = [NSUbiquitousKeyValueStore defaultStore]; 

を私はエラー

を受け取ります
NSUbiquitousKeyValueStore error: no valid com.apple.developer.ubiquity-kvstore-identifier entitlement. 

この問題を解決する方法については、私のApp.Entitlementsファイルはデフォルトのマクロの接頭辞を使用していますが、自動生成されたファイルから変更されたものはありません。 iCloudはiTunes ConnectのAppIDで確実に有効になっています。

ありがとうございました。

+0

あなたがダウンロード/生成しているどのように最近/開発プロビジョニングプロファイルがインストールされていますか? devサイトで "iCloud Enabled"設定をチェックしたら、プロファイルを再生成する必要があります。また、Entitlements.plistファイルには何が含まれていますか? –

+0

私は新鮮なプロビジョニングプロファイルを生成し、これをポストする直前に設定したので、古いプロビジョニングプロファイルを使用していません。私の権利条項。欠落しているように見えますが、私はそれを調べて何かを修正するかどうかを見ていきます。ありがとう。 –

+4

本当に、Entitlements.plistファイルを追加するだけで、Can Be Debugged-NOというエントリが作成されていることを確認しただけで、すべてがジプシーの魔法のように機能します。ありがとうございました。 –

答えて

16

私のコード、設定、資格などはすべて正しいものですが、同じ問題がありました。私はiPhoneから物理的にアプリケーションを削除し、XcodeでビルドしてiPhoneで実行することで修正しました。他のソリューションが他の誰かのためにうまく動作しない場合に備えて、追加したかっただけです。

3

私はこれが私のために働くことを得るために従う(Xcodeの4.2.1)でした:Xcodeで

  1. は、あなたのターゲットに行く>下部の概要>、エンタイトルメントを有効にする]をクリックします。
  2. iOSプロビジョニングポータルで、アプリケーションIDに移動し、iCloudサポートを有効にします。 (これを行う必要はないかもしれませんが、それは私のために機能しました)
  3. プロビジョニングプロファイルを編集して強制的に更新します。このプロファイルをダウンロードして開き、Xcodeで自動的に起動します。
  4. アプリをクリーンにして、端末にイ​​ンストールします。
+1

XCode 6では少しシンプルです。ターゲット>機能> iCloudに移動してオンにします。 Xcodeは残りの部分を処理する必要があります。 – Nick

2

Mac(iOS)アプリケーションをデバッグしようとすると、この問題が発生しました。問題は、私がデバッグビルドに署名していないことが判明し、「Skip Install」が「Yes」に設定されたプロジェクトのデプロイメントフェーズがないことが判明しました。

明らかに、iCloudは署名のないアプリケーションでは正しく機能しません。

5

大きな警告:デバイスがjailbrokenしている場合は、AppSyncをアンインストールしてください。私はそのために2つの狂気の日を過ごしました。 iCloud(およびGame Center)は、AppSyncがインストールされているデバイスでは、正しいエンタイトルメントとプロファイルでも動作しません。

+1

アプリ内購入機能に問題があり、あなたの助言が私を助けました。どうもありがとう。今私は空でない商品リストを受け取る! – florian

1

は、次の値を使用してエンタイトルメントでcom.apple.developer.ubiquity-kvstore-identifierを追加します。

$(TeamIdentifierPrefix)$(CFBundleIdentifier)