2016-04-18 58 views
0

將iCloud添加到正在運行的iOS應用程序,數據存儲在公共數據庫中。我必須在模擬器中登錄到iCloud,但這樣做,應用程序在模擬器中運行良好。在iPad上,程序在以下語句中崩潰:應用程序在模擬器中運行,在iPad上失敗「丟失所需的權利... icloud-services」

CKContainer * dbContainer = [CKContainer defaultContainer];

該應用程序被終止,「由於未捕獲的異常‘CKException’,理由是:‘缺少所需的應用授權com.apple.developer.icloud服務’

當我打開Xcode中的iCloud功能, XCode在com.apple.developer.icloud-services的.entitlements文件中創建一個條目,其中包含一個項目:一個值爲「CloudKit」的字符串。

在我的iPad上,我登錄到iCloud與模擬器上的方式相同

我已經多次詳細地通過Apple的權利故障排除指南我已經搜索了每一個我知道如何的方法,但我無法弄清楚爲什麼會失敗。我確實發現和閱讀建議作爲重複的帖子,並沒有任何解決方案建議爲我工作。

張貼了這個問題之後,我經過授權的故障排除指南去一個有更多的時間,發現在內置應用中的以下權利部分:

<dict> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>PTXZTRRTHH.*</string>  
    </array> 
    <key>get-task-allow</key> 
    <true/> 
    <key>application-identifier</key> 
    <string>PTXZTRRTHH.com.quipzl.Quipzl</string> 
    <key>com.apple.developer.ubiquity-kvstore-identifier</key> 
    <string>PTXZTRRTHH.*</string> 
    <key>com.apple.developer.icloud-services</key> 
    <string>*</string> 
    <key>com.apple.developer.icloud-container-environment</key> 
    <array> 
     <string>Development</string> 
     <string>Production</string> 
    </array> 
    <key>com.apple.developer.icloud-container-identifiers</key> 
    <array> 
     <string>iCloud.com.quipzl.Quipzl</string> 
    </array> 
    <key>com.apple.developer.icloud-container-development-container-identifiers</key> 
    <array> 
     <string>iCloud.com.quipzl.Quipzl</string> 
    </array> 
    <key>com.apple.developer.ubiquity-container-identifiers</key> 
    <array> 
     <string>iCloud.com.quipzl.Quipzl</string> 
    </array> 
    <key>com.apple.developer.team-identifier</key> 
    <string>PTXZTRRTHH</string> 
    <key>aps-environment</key> 
    <string>development</string> 
</dict> 

和應用程序不運行在我的iPad - 直到執行到達上面的代碼,當它拋出一個異常。爲什麼?

+0

可能重複[該應用程序缺少必需的權利com.apple.developer.icloud-services'](http://stackoverflow.com/questions/32728300/the-application-is-missing-required-entitlement-com -apple-developer-icloud -servi) – jose920405

+0

不是重複的 - 我的應用程序還沒有在應用商店中出現,並且它每次都在iOS 9中失敗,而不僅僅是第一次。切換iCloud的開關並不能解決問題。 –

回答

0

此次崩潰不是由於任何缺少的權利,雖然例外說它是。我不知道究竟是什麼修復了這個問題,但我確實知道這個工作的過程如下:

1)創建一個新的iOS項目,確保它運行。 2)在新應用中啓用CloudKit,並在由XCode創建的默認控制器中添加#import「CloudKit/CloundKit.h」。

3)添加語句「[CKContainer defaultContainer];」在viewDidLoad()方法中。

4)再次運行該應用程序,並確保它不會在添加的語句中崩潰。

5)遍歷舊應用程序中的所有應用程序屬性,並確保所有值與新應用程序中的值相同。

最後一步包括十幾個值更改,並解決了問題:舊應用程序不再嘗試訪問iCloud時崩潰。

相關問題