讓我首先指出,默認情況下,iCloud應用程序存儲在容器中是「沙箱」。已簽名的應用程序只能訪問其自己的容器,而無需API密鑰對其他應用程序容器進行身份驗證。您可以讓多個應用程序共享同一個容器,或者根據需要在同一個應用程序中使用多個容器,但實質上您必須是所有應用程序的開發人員或具有明確的許可來執行此操作。查看Incorporating iCloud into your app和Enabling CloudKit瞭解更多詳情。
其他(非AppStore的)應用程序和服務可以驗證通過CloudKit Web Services使用應用程序的數據:
- 進行身份驗證到iCloud(重定向爲主,這樣的證書仍然是未曾顯露,並且只能由已知的用戶和iCloud服務器本身);
- 進一步驗證您的應用程序API密鑰;
該過程詳細描述爲here,正如Adam Taylor已經指出的那樣。
以上所有內容都說明了,如果我理解正確,您想要訪問所有用戶的iCloud數據。我認爲,由於多種原因,您將無法這樣做:
- 數據受應用程序密鑰保護,因此除了基本憑據外您還需要訪問容器;
- 我敢肯定,蘋果有一個設計政策,永遠不會要求以純文本的用戶憑據。明確詢問用戶的憑據將違反他們的政策,即使事實證明不是這樣,擁有憑據也無濟於事,因爲您必須在某處輸入/發送憑據。但是所有的iCloud認證機制都是爲了只由最終用戶請求認證而設計的。
這就是爲什麼我不相信有可能僅僅使用用戶憑證並獲得所有他們的iCloud數據。現在,我的2美分爲什麼日出工作:
據我所知,Sunrise應用程序的工作原理是因爲日曆數據被設計爲通過CalDav共享,工作在一個具體的URL,所以你可以導入和鏈接您在日曆客戶端應用程序中的日曆。可以通過一些調查找出URL。 CalDAV與用於郵箱訪問的IMAP和POP3類似。
對於你想要提取什麼樣的數據(蘋果應用程序特定的,開發者應用程序特定的,文檔,鍵值對或其他)以及我或其他用戶可能會對你有所幫助進一步。
您是否查看過icloud的身份驗證文檔? https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CloutKitWebServicesReference/SettingUpWebServices/SettingUpWebServices.html#//apple_ref/doc/uid/TP40015240-CH24-SW3 –
您是否正在嘗試將您的應用與iCloud並從雲中存儲/檢索,或者您是否嘗試訪問iCloud上的所有用戶數據? –