-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
iCloud cloud sync driver #16794
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iCloud cloud sync driver #16794
Conversation
80c8c42
to
c43561b
Compare
woooot, that's big news dude. congrats and thanks for all the hard work. 🚀 |
Does CloudKit mean that it won't work on a windows machine with iCloud installed? Or that I won't be able to see the save in the files app? |
Yes, that's correct. There aren't iCloud APIs in a Windows SDK that are available. I've looked at the iCloud for Windows application and it looks like it just exposes iCloud Drive as a location in Explorer. I'm actually not certain whether that's immediately accessible through RetroArch's VFS layer or if you'd need to somehow bind it to a drive letter? In either event RetroArch would be accessing it through standard file operations, so calling it an "iCloud driver" would be quite misleading. You'd basically just be pointing it at a directory. But then that wouldn't work on iOS as it can't use RetroArch's VFS layer to access iCloud Drive, and tvOS can't access iCloud Drive at all even with the iCloud APIs.
You can't see the backed up copy of the files in the Files app, that's true. But, you can see all of the save files in the Files app inside the RetroArch sandbox. To be completely honest, I don't really see that as a problem. If you can see the files you might be tempted to change them directly, and that's not something that the sync algorithm supports. All of the files are indexed in the manifest file, and manually keeping that updated with any changes you make is going to be a headache. |
My reason for asking is wishing to have the ability to play a game across any/all platforms that support iCloud (Drive). This would mean having progress in sync between platforms seamlessly. All I would have to do is point the program on windows towards iCloud Drive for saves, and it would work similarly on Apple devices. I would hazard an opinion to say that more people would use windows interoperability more than would use tvOS, so is the sacrifice for its sake warranted? I don't know - but you probably know the truth on that more than me. Regardless, we all appreciate the work done on this, and hopefully in future if tvOS supports iCloud Drive then maybe it could be added. Emulation is biggest on windows so IMO it would make sense to include windows as much as possible. But as a non coder, I know it's easier said than done! |
In theory it's not hard to write a cloud sync driver that just uses the libretro filestream apis to copy files around. I'm not sure that actually works on the windows iCloud integration and I'm not able to test it as I don't have a windows computer, so not something I'm planning on working on. That's just half the problem though, you'd still need to write the iCloud Drive driver for iOS to be able to sync. Now that the CloudKit support is in, that's not that hard to do either (but again, not something I'm currently planning on working on). And then you'd have the documentation problem ("On Windows, set up iCloud through Explorer, then set up RetroArch with this driver; and then on iOS, set it up a completely different way").
I don't consider it a sacrifice because in order for tvOS to work at all through iCloud it has to be done this way. Doing it through iCloud Drive is a completely different implementation, and one doesn't preclude the other. Taking a step back, if you're looking for cross platform interoperability then using proprietary APIs and services that are only marginally supported on those platforms is dubious in my opinion. It's why I started with the WebDAV driver. |
it can safe JUST safe data, right? No core settings, shaders etc |
Uses CloudKit because iCloud Documents isn't available on tvOS.
Fixes #16566