我已經設置了多個應用程序共享相同的容器,您不僅需要在Xcode本身中進行配置,還需要在您編寫的代碼中進行配置。
let container = CKContainer(identifier: "iCloud.yourDB")
let publicDB = container.publicCloudDatabase
根據iCloud用戶授予訪問權限,而不是基於應用程序。因此,如果您將擁有使用相同iCloud ID的設備上運行的所有三個應用程序,則它們都將有權訪問同一個公共數據庫&,並具有默認權限。
您需要「代碼」才能在管理應用程序中「創建」&「寫入」您的數據庫。大概是「寫入」承包商應用程序中的數據庫,並在消費者應用程序中「讀取」數據庫;一個示例場景。
但是,如果計劃是讓多個iCloud用戶使用共享同一個容器的不同應用程序,那麼您的選擇會受到更多限制。私人數據庫就是這樣的私人數據庫。所以不同的iCloud用戶不能共享同一個私有數據庫,不能更改權限期限,他們只能共享公共數據庫。
在公共數據庫中,默認權限將授予所有人讀取訪問權限,只允許[登錄到iCloud帳戶]的用戶能夠創建新記錄並將創建的記錄與創建它們的用戶鏈接。
換言之,如果經過身份驗證的用戶[A]在公共數據庫中創建記錄,用戶[B]可以讀取它,但沒有寫入權限來更新它;您可以/可以更改訪問權限,以便讓他們有權這樣做,如果這是您的要求,那麼您將在儀表板上進行更改。
但是請注意,公共數據庫的配額沒有鏈接到iCloud帳戶,據我瞭解,它們已鏈接到應用程序。因此,如果您創建一個將大量數據轉儲到公共數據庫的應用程序,如果您的應用程序用戶超出每個應用程序允許的每個用戶的公共數據庫配額,Apple將向您發送帳單。[是的,因此您的應用的用戶越多,獲得的公共數據庫配額越多,但您應該/需要限制個人用戶可以聲稱的數量以限制您對iCloud費用的責任!]
我可能會錯過 - 瞭解蘋果對其工作原理的描述/將爲用戶/應用程序收費的最後一段,可以通過一切手段進行澄清。
感謝您的代碼,早些時候嘗試過,它不工作....標識符...我有一些問題,但最大的一個是承包商上傳每個項目50MB - 100MB的讀寫能力,那麼消費者將從公共數據庫訪問該數據庫生成報告供他們下載。所以需要有一些方法讓他們只訪問該項目,而不是其他各種承包商發佈的其他項目。我需要某種類型的登錄,而不是雲登錄,併爲每個項目設置密碼。服務器到服務器是否允許我將數據傳送到服務器? – Grumpy
您可以在您的代碼中添加一個登錄名,並將可搜索的參考UUID與它在一個公共數據庫中相關聯,以便消費者和承包商可以相互查找參考UUID並搜索由該承包商/消費者提交的記錄。但正如我在最後一段中所說的,您需要非常小心公共數據庫中的大量數據。我一個模糊的回憶,一組略微不同的規則蘋果資產[這是你需要的50/100MB],但它們被鏈接到你的應用程序,而不是iCloud帳戶用戶! – user3069232
他們知道數據限制和收費,並希望繼續。一旦我們運行,將不得不限制照片。 UUID會很好。該應用程序的作品,使所有的數據可以存儲在手機上供以後上傳(數據收集時可能沒有WiFi)。消費者可以下載消費者應用並向承包商請求訪問,我可以驗證UUID。消費者可能會購買,那麼我需要通過請求授予對該項目的訪問權限,驗證他們應該有權訪問,然後通過他們的UUID授予訪問權限?他們說他們將有一個Icloud數據庫管理員來做到這一點? – Grumpy