Provenance-Emu / Provenance

iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: https://wiki.provenance-emu.com |
https://provenance-emu.com
Other
5.89k stars 685 forks source link

Game Library Syncing #1

Open jasarien opened 10 years ago

jasarien commented 10 years ago

Sync ROMs, saves, etc…

Possibly using dropbox? Other suggestions?

dcvz commented 10 years ago

I can do Dropbox integration, we used it in nds4ios and it works well. At the moment saving ROMs would be okay, since they're fairly small, but once more emulators are added the space needed for ROMs on Dropbox might increase drastically.

jasarien commented 10 years ago

That'd be cool.

ghost commented 10 years ago

Would this sync with OpenEmu?

jasarien commented 10 years ago

No, it would simply be dropbox integration. Unless OpenEmu also integrated Dropbox and you used the same folder they wouldn't sync together.

XeresRazor commented 9 years ago

Save synching should be fairly easy to do with iCloud document synch, I'll take a look at it when I'm done with the PSX Core.

Cralex commented 9 years ago

For my 2 cents, I'd prefer Dropbox over iCloud sync since my saves are already saved there (using symbolic links, so it works with OpenEmu) and because my iPad is under a different iCloud ID. (Maybe there's a way to share files between iCloud storage users, but I never use it so I wouldn't know.)

I'm fine if only the saved games are synced. Syncing the ROMs too would take up too much cloud space and I'd feel a bit paranoid having ROMs in the cloud...

josejulio commented 9 years ago

Maybe it could have an option to let you choose what you want to sync? e.g. roms, saved games, configuration, etc.

ghost commented 9 years ago

I agree with Dropbox syncing. While ROM syncing would be nice, I don't think that's as necessary as save states. Like Cralex, I have symbolic links for my saves with OpenEmu setup, and being able to access my saves across devices would be amazing. It would also be nice to be able to choose which service to use. I would say Dropbox, Box, or iCloud Drive. Maybe Google Drive as well.

dantheman213 commented 9 years ago

I setup an integrated web server that allows for bulk copying of ROMs as well as uploading/downloading game saves. Please see pull request here: https://github.com/jasarien/Provenance/pull/81

jpete24 commented 8 years ago

This has been discussed, but I think will be more of an issue as people want to use this app on their devices and on the new AppleTV, but we need to accommodate a way to sync game ROM's and game save files so we can just play on any device. I know there has been some discussion about Dropbox, but I wonder if there is any way we can incorporate this? A web server connection is a good stop gap, but I think a full blown sync solution is going to be necessary.

Is there any way we can dissect how GBA4IOS was utilizing Dropbox framework to make it work with ATV and iOS?

jasarien commented 8 years ago

Dropbox would be fine if it was only iOS we were dealing with. As it stands there is no WebKit, or UIWebView on tvOS, which is a vital component in the completion of OAuth which Dropbox requires in order to be used in 3rd party apps. So we can't use Dropbox with tvOS until there is a usable web component.

jpete24 commented 8 years ago

I guess for now the only option is to use the iPad version of Provenance, and then Airplay mirror the screen to the Apple TV, which I guess you can do now....

On Tue, Sep 22, 2015 at 1:07 PM, James Addyman notifications@github.com wrote:

Dropbox would be fine if it was only iOS we were dealing with. As it stands there is no WebKit, or UIWebView on tvOS, which is a vital component in the completion of OAuth which Dropbox requires in order to be used in 3rd party apps. So we can't use Dropbox with tvOS until there is a usable web component.

— Reply to this email directly or view it on GitHub https://github.com/jasarien/Provenance/issues/1#issuecomment-142367635.

Josh Petersen jpete24@gmail.com 515-450-7311

jasarien commented 8 years ago

I tried airplay previously, the latency was too high to be playable.

jpete24 commented 8 years ago

Welp that sucks. I guess for now I'll have a set of games I want to play when I'm portable and a set of games that I want play around the house. Does the web server work on TvOS? I guess you could transfer game files and saves around back and forth if needed.

On Tue, Sep 22, 2015 at 1:23 PM, James Addyman notifications@github.com wrote:

I tried airplay previously, the latency was too high to be playable.

— Reply to this email directly or view it on GitHub https://github.com/jasarien/Provenance/issues/1#issuecomment-142371605.

Josh Petersen jpete24@gmail.com 515-450-7311

josejulio commented 8 years ago

Maybe something like this could help? https://github.com/gilbertchen/acrosync-library

jasarien commented 8 years ago

Possibly. I'll have to take some time to have a proper look.

jpete24 commented 8 years ago

josejulio's idea look viable. All you need to do is make sure you have a local machine that can be the connection point to sync between ATV and iOS devices.

huntercross commented 8 years ago

What about iCloud drive?

jasarien commented 8 years ago

We don't know if the AppleTV will have an iCloud Drive app yet. It probably will but not until release.

Provenance can't access iCloud directly because it's not an App Store app.

XeresRazor commented 8 years ago

We may be able to use CloudKit in development mode though, if not natively, via the REST api.

jasarien commented 8 years ago

Maybe, wouldn't work if provenance is distributed by iEmulators again, or something.

XeresRazor commented 8 years ago

Hopefully being able to build and run apps without a developer ID now should help there. Though it does still require you to have a mac.

jasarien commented 8 years ago

That's what I mean. Building for yourself may allow access to iCloud in dev mode. But if it's distributed via iEmulators (which has been the widest distribution Provenance has had) it won't work because it'll be signed with an Enterprise cert and they don't allow access to iCloud.

Does the non-paid dev account even allow you to create a profile with iCloud entitlements anyway? I don't know if it does or not.

XeresRazor commented 8 years ago

With the REST API, you shouldn't need developer credentials, you just need to set the app ID up once with valid credentials, and then other apps can access the web API for that App ID. https://developer.apple.com/library/prerelease/ios/documentation/DataManagement/Conceptual/CloutKitWebServicesReference/SettingUpWebServices/SettingUpWebServices.html#//apple_ref/doc/uid/TP40015240-CH24-SW1

jasarien commented 8 years ago

Yeah I don't think that's going to work :D

Upload URLs are valid for a limited time (15 minutes) and the maximum file size is 15MB.

Unless I'm missing something?

XeresRazor commented 8 years ago

Might work for cloud saves, and you can always chunk rooms into multiple parts. But yeah, overall we're very limited by not being a store app.

jasarien commented 8 years ago

I think josejulio's suggestion might be the best to investigate.

huntercross commented 8 years ago

Google drive example - https://github.com/googledrive/ios-quickeditor

Doesn't require oAuth, but does require some config both on the google drive console and setting 2 known secrets

jasarien commented 8 years ago

We need a solution that's as simple as pressing a button in the app or else no-one but us techies is gonna use it.

josejulio commented 8 years ago

Another option that comes to my mind, would be to start a web server, and request the user to move to a browser (on this phone, pc, mac, w/e) and go to http://local.ip.of.apple.tv, from there, do the dropbox login, receive the keys and send to the apple tv (using the same web server). Though is somewhat cumbersome.

XeresRazor commented 8 years ago

So something similar to the way you activate HBO or ESPN on the current AppleTV, letting you browse to a page on the AppleTV, and use that external browser to authenticate with dropbox. Makes sense, not sure if it's doable but it sounds like something to look into.

cplr commented 8 years ago

Regarding AirPlay, according to the guy that runs Afterpad.com, the iOS 9.1 beta has impossibly low latency with AirPlay - basically as good as the Lightning-HDMI adapter.

jasarien commented 8 years ago

Sounds like something we can revisit then.

illando commented 8 years ago

Hey James, Just a little suggestion,meanwhile you guys are dealing with the best solution to have sync ROMS and saves between iOS and tvOS, it will be great to include in a new official release a simple dropbox sync only for saves like GBA4iOs can actually do. So we can finally sync saves between iPhone and iPad....Pleaseeeee! :)

huntercross commented 8 years ago

I have dropbox syncing code for iOS. Reach out and I can provide, it would likely take me too long to integrate since I don't understand your current code, but certainly has a fair amount of the big stuff already solved with detecting dropbox status / sync issues. Not sure how best to pass that off

jasarien commented 8 years ago

We can't use Dropbox on tvOS and I don't want two separate implementations to manage. I still think it would be best to explore an option that works for both iOS and tvOS.

illando commented 8 years ago

Ok, I understand, but...is Web Server feature actually working? I tried version 1.2.1 and 1.1.6 but I can't connect to the IP. I can see only a blank page.

jasarien commented 8 years ago

Last I checked it was working. Are you on the same wifi network as the iOS device you're trying to connect to from your computer?

illando commented 8 years ago

Yes! I'm also trying with other Apps web server (VLC, Documents)... and It works. Same IP address.

jasarien commented 8 years ago

you're using the very latest code from the master branch? (not the releases)

illando commented 8 years ago

No, I'm using the releases. Am I wrong?

jasarien commented 8 years ago

The releases aren't always the latest. They're just points in time where the version was incremented for version tracking.

I just testing the Webserver right now and it works for me: http://d.pr/i/10tYY

illando commented 8 years ago

And what's about the idea to modify the actual web server interface adding a "download as zip" function for files and folders? Just to make possible an excange of roms/saves between devices without a computer.At the end of the download it will activate the classic "open in" Safari dialogue screen. It will be a kind of manual sync... But compatible with all the devices!!

illando commented 8 years ago

Hey James, is this last an imbossible request? What's you think about it?

dantheman213 commented 8 years ago

You could use HTTP requests to mimic oauth integration @jasarien if you wanted to attempt to do a implementation of DropBox before their official SDK catches up. EX: http://stackoverflow.com/questions/25423924/oauth-2-0-in-php-using-curl

As for the web server @illando it is derived from another GitHub project. However, it could be modified to allow for zip functionality. We would need to add a button the to the internal web page, an AJAX request back up to the internal web server, and some zlib or some other zip library to do the compression. Have you attempted to add this feature? What problem are you running into?

illando commented 8 years ago

@dantheman213 Unfortunately I'm not a developer. I was just trying to be useful providing some ideas to improve the user experience, just because James asked for some suggestions in the post title.

tkunstek commented 8 years ago

Regarding Dropbox not working on tvOS since you could not authenticate without a web browser (9/22 comment): There was a recent discovery using private API's that show a UIWebView. Since you would never submit this app to the app store, being a private API is ok. See more here: https://github.com/steventroughtonsmith/tvOSBrowser

jasarien commented 8 years ago

Just because an app isn't in the App Store doesn't mean it's fine to use private API. Private API is usually private for a reason. It may be that the API is unsuitable for reasons other than Apple just wanting to control things - perhaps its crashy, perhaps it changes a lot between SDK releases which could break source compatibility between versions.

Also, the age-old adage: "Just because you can, doesn't mean you should."

UIWebView clearly wasn't intended to be run on tvOS, regardless of whether it can or not. The Focus Engine is not designed to work with web content, and the hacks to implement a 'cursor' in order to interact with the web view, while clever, aren't a great user experience in any way.

Finally, in order to even build the tvOSBrowser sample app, one needs to redefine the macros used to tell the compiler what is available to tvOS in a file that ships with the SDK. I'm not doing that - I use my development setup for more than just Provenance, and modifying SDK files is not something I'm going to do. Plus, for users who aren't developers just following instructions to build Provenance for their AppleTV, it complicates things further for them - all of a sudden they have to modify a file that ships with Xcode? And they get this scary warning when they try? omfg wut r u doin

There are other solutions that don't involve using private API.

josejulio commented 8 years ago

Maybe this can work as to enable login on the apple tv (requiring a iphone/ipod/ipad) https://github.com/rsattar/Voucher

ghost commented 8 years ago

Try to see if you can integrate google drive or mega since the amount of free space given on drop box is very limited unless you pay for more storage. It would also be nice if game saves/save states could sync with a cloud service.