再次陷入iCloud :(。我正在使用Core Data + iCloud並在我的應用程序中,我想知道用戶是否從他的帳戶中關閉了文檔和數據 謝謝如果用戶從iCloud帳戶中關閉文檔和數據,則會導出
回答
沒有內置的支持來檢測這個改變,只是爲了檢測用戶是否已經註銷。一種常見的方法是將一個標識文件寫入iCloud,與Core Data分開,然後監視該文件到看它是否消失細節有所不同,但它通常是這樣的:。
編寫使用文件iCloud調用,並將文件名保存爲用戶默認值。每個使用該帳戶的設備將具有不同的文件,因此在文件名中包含UUID是個不錯的主意。你只寫這個文件,你永遠不會改變它。
使用
NSFilePresenter
或NSMetadataQuery
來獲得該文件的更改通知 - 如果它消失了。
如果文件消失,立即採取措施來卸載整個核心數據堆棧,包括每一個管理對象,因爲他們不具備持久性存儲備份它們了。
一個示例實現在Black Pixel's version of the Core Data "Recipes" demo app。您可能需要對其進行調整才能使其在代碼中正常工作。
有兩種情況:
- 的應用程序沒有運行,或者在後臺帳戶狀態發生變化時。
這裏的解決方案是使用NSUserDefaults(或其他本地存儲在應用程序中)存儲/比較身份標記。從NSFileManager獲取身份標記,並在每次應用完成啓動或回到前臺時將其與緩存的值進行比較。
id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
- 的應用程序正在運行的帳戶更改。
這需要文件主持人來容器內的「東西」。最好的解決方案是使用不是同步的文件。
實現-accommodatePresentedItemDeletionWithCompletionHandler:產生一個線程(dispatch_async工程很好),並進行清理工作。
ubiquityIdentityToken是IOS6功能。我的應用程序支持IOS5,也可用於iOS 5的 – Sachin
,您可以將其降級爲調用 - [NSFileManager URLForUbiquitousContainerIdentifier:],以發現設備上是否有活動帳戶。這可能需要很長時間。 – ImHuntingWabbits
- 1. CloudKit和iCloud帳戶
- 2. 我如何關閉用戶帳戶
- 3. 通過公共數據庫ICloud多個用戶(不同的iCloud帳戶)?
- 4. YouTube API - 用戶帳戶關閉
- 5. 關閉會話當帳戶刪除
- 6. 如何導出DocuSign帳戶設置,用戶和用戶配置文件,然後將其導入新帳戶?
- 7. 在用戶的iCloud帳戶中存儲的CloudKit中的私人數據?
- 8. 如何在Reporting Services中導入/導出用戶帳戶?
- 9. 在Meteor用戶文檔中合併Twitter和Facebook帳戶
- 10. 在用戶禁用iCloud之後製作本地iCloud文檔
- 11. 如何在用戶停用帳戶後關閉應用程序?
- 12. 如何讓用戶更改「帳戶和同步」中的帳戶數據
- 13. 如果用戶在JSF中離開頁面,數據庫連接會關閉嗎?
- 14. 如何將數據存儲到開發人員icloud帳戶
- 15. 在關閉帳戶之前清除應用程序數據
- 16. 導出文檔後響應關閉
- 17. Asp.Net Mvc4 WebSecurity如何激活或關閉用戶帳戶
- 18. django如果用戶出現多次,則將用戶從用戶中排除掉
- 19. 如果帳戶未啓用,則自動註銷用戶(設計)
- 20. 通過用戶登錄從其他網站導入用戶帳戶數據
- 21. 我如何檢查用戶是否切換了iCloud帳戶?
- 22. cansecurity中的用戶帳戶數據庫
- 23. 如何關閉在woocommerce結帳中創建帳戶?
- 24. 如何使用Google文檔API創建新的用戶帳戶?
- 25. 如果出現錯誤,用戶將不會繼續結帳opencart
- 26. 如何從WooCommerce結帳表單中更改「帳戶用戶名」和「帳戶密碼」文本?
- 27. iCloud +核心數據:第一次導入和用戶的數據丟失感
- 28. 導航抽屜中的用戶帳戶
- 29. 應用程序是否允許用戶打開或關閉iCloud?
- 30. 如何關閉窗體,如果用戶按c退出登錄#
雅我已經做了這件事,但我的問題是爲文檔和數據設置爲關閉。任何解決此問題的方法 – Sachin
使用定位文件*是用戶關閉文檔和數據的解決方法。 –
NSMetadataQuery是邪惡的。它需要一個運行循環,並且必須在主線程上完成它的工作。使用sync'd sentinel文件不會用於檢測帳戶更改(或刪除所有按鈕),因爲另一個peer可能會隨意刪除它。該文件需要在.nosync中。 – ImHuntingWabbits