簡體   English   中英

如何為iOS應用正確啟用iCloud文檔同步?

[英]How do I properly enable iCloud document sync for iOS app?

在我的cordova iOS應用程序中,用戶可以將其數據備份到文件中,該文件保存在應用程序容器內的Documents文件夾中,然后應同步到iCloud。 但是,盡管文件已保存,但從未同步到iCloud,因此很明顯我必須丟失一些內容。 這些是我已采取的步驟:

  • 在developer.apple.com上注冊的iCloud容器和在xcode中啟用的iCloud文檔功能:

iCloud容器

  • NSUbiquitousContainers詞典已添加到Info.plist:

iCloud信息

  • 創建存檔版本並將其上傳到App Store,並通過Test Flight將版本發布給測試人員(注意:應用程序已經通過審核並已發布到App Store)。
  • 注意,科爾多瓦config.xml中包含BackupWebStorage設置這樣的雲備份應該啟用(不知道這究竟是否會影響文件同步)。
  • 用戶保存備份文件,該文件保存到應用程序的Documents文件夾中(注意:該應用程序使用cordova-plugin-file插件將文件保存到插件變量cordova.file.documentsDirectory指示的位置):

IEXPLORER

在這一點上,我本來希望看到xBrowserSync出現在“存儲和iCloud使用情況”設置中,但我沒有:

存儲和iCloud使用

而且在iCloud Drive應用程序中也看不到xBrowserSync文件夾:

iCloud雲端硬碟

當然,我從沒看到文件同步到Mac或icloud.com。

顯然我缺少了一些東西,但看不到。 我已經閱讀了許多有關如何使它工作的SO帖子,並且我發現Apple的文檔不清楚且令人困惑,因此我有點被困在這一點上。 有人能指出我正確的方向嗎?

經過進一步的閱讀,我相信我知道這里缺少什么。 我還沒有意識到您需要明確地告訴iOS將文件上傳到iCloud文檔存儲 ,這將允許文件出現在用戶設備上的iCloud Drive中。

因此,我需要編寫一些使用FileManager類的(iOS)代碼以:

  1. 調用url(forUbiquityContainerIdentifier:)方法以獲取本地iCloud容器的位置並對其進行初始化(這時該應用程序將出現在“存儲和iCloud使用情況”設置中)
  2. 通過調用setUbiquitous(_:itemAt:destinationURL:)告訴iOS將文件上傳到iCloud。

我正在構建一個非常基本的Cordova插件來執行此操作。 完成后,我將通過鏈接更新此答案。

編輯:

我開發的cordova插件稱為cordova-plugin-icloud-document-storage 它當前僅實現將文檔上傳到iCloud(即setUbiquitous ),而沒有實現FileManager類的其他iCloud功能(例如管理雲更新或版本沖突)。 如果有人想開發此功能,請提交拉取請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM