Syncing between Mac & iOS

There was an explanation on the blog a few days ago about why iCloud syncing is not currently an option for Scriverner.

literatureandlatte.com/blog/?p=713

The developers have posted very good reasons as to why Dropbox is the sync method at the moment. Google Drive and iCloud do not play well with Scrivener projects and are likely to corrupt files, leading to lost work. I wonder are you aware of the option to transfer files using iTunes? A foolproof method of transferring projects. There is a very good chance of user error/misapprehension on your end, so I suggest you go through the tutorial project, learn how the app works and then present any difficulties that you may have clearly, so that the developers and forum users can attempt to help you.

From my perspective, I’ve downloaded the app and created a test project on my iPad over the past hour or so. I then went through the synching section of the tutorial and, with Scriv open on both iPad and desktop, synched the project seamlessly. I will experiment later with some much larger projects that are currently on my desktop, but overall I am amazed at how smooth the sync process was, and indeed with just how intuitive the iPad version has been to use. I have never really given much thought of the iPad as a work tool, but Scrivener will likely change that. Congratulations Keith and all at Lit&Lat. My early impressions of the app are stellar.

Now this is a good question, which I am also curious about. I made changes on my laptop to my test iOS project. Without doing anything other than letting Scrivener auto save as per usual, I then opened Scrivener on the iPad and received the message that the project had had changes, and would I like to sync them. Why yes, yes I would and thank you! The project updates, and they are now identical. So I wonder whether this button is for use when returning to an internet connection after a period of work on the laptop, or something else?

Ditto!

Am truly sorry for by my curtness, and dissatisfaction. There are a great many things about Scrivener for iOS, but a problem I’m still having is syncing. I will go over the tutorial project over the next couple of days, and see if I’ve missed anything.

So far, the problem in Scrivener for iOS is that it creates these crash files, even when nothing has crashed. The whole dropbox syncing issue revolves around the inability of either app (desktop/iOS) to figure out which is the ‘master’ file. It really should be based on whatever the last device I’ve used. If the last device is iOS, then on dropbox, the file should replace the file that’s there with the file I recently edited or my iOS device. Ditto, for the desktop app and dropbox integration. It doesn’t seem to be doing that I’m afraid.

I have a Macbook Pro, and there’s an ingenious app you can get through the App Store (I believe) called “Clean My Mac 3”. It will definitely free up room on your hard drive, but also clear out your RAM in case you need a little more zippier opening and closing of files. I highly recommend it.

Woke up this morning and purchased the IOS version of Scrivener. Was also having sync issues until I realized I had everything local to my iphone. So when I get home from work today, all the changes will be there and ready to work with. Exciting! :smiley:

I think the problems some people are experiencing are created by themselves by making things much too complicated. Just SAVE the project in the correct folder on Dropbox and you won’t have any problems.

The Sync buttln in iOS Scriv is to to save the changes you’ve made to your project before closing. The similar button in the Mac version is to check if there are any changes. If you just open the project in the normal way on the Mac (after having Saved/synced on the iOS device) you don’t have to do any special “syncing”.

You’re treating it as if it was still a question of “Sync with external folder” in rtf format, which it is not.

First: I checked bookboy’s link and read the post explaining why Scrivener does not sync through iCloud yet. Second: Once I understood the difficulty with that process I wrote Feedback to Apple regarding this problem with iCloud. ICloud will lose my monthly fee for extra storage because I will need to move everything to Dropbox. Why pay two places to store my data?

If Apple won’t play nicely with the other children then they lose.

I don’t like Dropbox and would have preferred to use iCloud, but that won’t stop me from using the best software for authors ever made. In the meantime I hope Apple gets it together enough to so Literature and Latte can use iCloud.

Here you go yosimiti, just in case you haven’t seen this in one of the several other threads you’ve posted about your issues!

https://forum.literatureandlatte.com/t/where-are-the-files-man/33919/23

Yosimiti, please do return the app to Apple if you are unhappy - they should give you a refund no problem. I’ll be happy to refund your Mac version too.

Everyone else: Obviously, there’s a learning curve on both sides and we will improve the documentation based on user confusion. We had 600+ beta testers who had no problems, so had no reason to think that the documentation was wanting. I will write a blog post and KB article clarifying things later, although really the routine is fairly straightforward:

  1. Place any projects you want to sync in a Dropbox folder (e.g. /Dropbox/Apps/Scrivener - the default).

  2. Ensure the Dropbox desktop app finishes syncing all the files before you try to sync on iOS - if it hasn’t finished syncing, the the files aren’t all online so the iOS version won’t be able to access them.

  3. On iOS, ensure it’s set up to sync with the same folder you placed the files in in (1). Tap the sync button.

And that’s pretty much it. After you’ve made changes on iOS, tap the sync button to commit all of those changes to Dropbox. When you return to your Mac or Windows machine, once again ensure that the Dropbox app on your desktop has finished syncing all your files. At this point:

  1. If the project wasn’t already open on your Mac, open it and it will incorporate all of your changes.

  2. If the project was already open, click on it. If the project wasn’t in the foreground, it will notify you of changes and ask you to check that Dropbox is synced. If it is, you click to continue, and the project will reload with your changes. If Scrivener doesn’t notify you of any changes and you know you’ve made some, that’s when you click the “Sync Mobile” button or use File > Sync > with Mobile Devices - that just forces the project to check for any changes that have been downloaded into it from Dropbox and incorporate them.

As I say, I’ll write a KB article and blog post on this later, and update the tutorial on both platforms based on feedback.

Thanks!

Keith

  1. If the project was already open, click on it. If the project wasn’t in the foreground, it will notify you of changes and ask you to check that Dropbox is synced. If it is, you click to continue, and the project will reload with your changes. If Scrivener doesn’t notify you of any changes and you know you’ve made some, that’s when you click the “Sync Mobile” button or use File > Sync > with Mobile Devices - that just forces the project to check for any changes that have been downloaded into it from Dropbox and incorporate them.

As I say, I’ll write a KB article and blog post on this later, and update the tutorial on both platforms based on feedback.

Thanks!

Keith
[/quote]
Thanks for the clarification Keith, much appreciated. Easily the best money I’ve ever spent for an iPad app.

This is exactly how it’s working for me (and plenty of others it seems). Just make sure you hit sync or have it sent to sync on close.

I presume you’re not doing something complicated like saving as a local copy and dragging things back and forth, or trying to upload things to dropbox via their website or anything like that.

You guys are top notch with support!

Just got the iOS version and love it! I was at first delighted to see that OneDrive was integrated, but then disappointed to see that it didn’t work with the syncing–I’m forced to use Dropbox.

Please consider expanding syncing options to include OneDrive. A great many of us are Microsoft Word users, so we use OneDrive also. It would be MUCH more convenient than Dropbox for us, and clearly you’ve already integrated it to a degree.

Thank you for this quality product!

They can’t; Scrivener projects are just more complicated than Word documents. They also can’t integrate with iCloud. It’s a technical limitation that only Dropbox seems to provide a solution for.

OneDrive can accept any type of file. It backs up everything on my Mac–from videos and music to zip archives, game code and web projects. It’s exactly like Dropbox in what you can backup. There are no limitations. Maybe you’re thinking of iCloud?

I’ve been following the development of this since it was announced. Keith has mentioned that he had to use a programmer’s toolkit (aka an API) that digs deeper than the basic sync functionallity that most software can make use of. He’s stated on a number of occasions that other sync services do not provide the kind of low-level access to their sync services that a Scrivener project sync requires. It’s not the same as how you interact with it on a desktop operating system.

I can’t address the details (don’t know them), I’m just passing along the conclusion that Keith came to: Only Dropbox gives programmers the access needed for him to properly and reliably sync to the iOS Scrivener application. He has stated that he’ll keep OneDrive and iCloud in mind, should they ever provide the programmers toolkits needed to integrate them, but I wouldn’t hold my breath… the software was released less than 24 hours ago. In that time, I don’t think MS or Apple have provided the cross-platform APIs that he needs, but even if they did, it took months of research and planning to implement with Dropbox.

That’s interesting–but too bad. I really like OneDrive for everything. It’s pretty much replaced my need for anything like Dropbox. Not a huge deal to use Dropbox with Scrivener–it’s just one more location I need to think of. I appreciate your taking the time to explain.

I had the same initial problem of the IOS app and the Desktop app not syncing the way I wanted. Like others have posted this confusion came from the Menu options for sync: 1. Sync to mobile device, 2. Synch to external folder, 3. Other options…

None of that worked.

But, like said here: Just SAVE the project in the correct folder on Dropbox and you won’t have any problems

Also, as link said:

I think Literature&Latte should CHANGE and EXPLAIN what the Menu Synth options are all about.

As old fashioned advise says: KISS

.

There are a few factors:

  1. We need a sync solution that is cross-platform and works with Windows as well as Mac.

  2. We needed a sync solution with an API readily available in Objective-C, so that I didn’t have to write everything based on web hooks from the ground up.

  3. We needed something a lot of users have.

  4. We needed something that we knew synced reliably on macOS and Windows.

Dropbox ticked all of those boxes, and is the most popular sync solution. On the Mac, iCloud is equally popular, but it’s not as good a solution for Windows users and it also has real problems with the Scrivener file format, so isn’t really compatible.

Scrivener’s sync code is essentially split into two units:

  1. The code that uses the Dropbox APIs. This replicates what the Dropbox client does on the Mac, uploading, downloading and dealing with conflicts.

  2. The code that reads the files changed by the mobile version and merges them with desktop changes.

This means that, in theory, I can add other sync solutions at a later date. I “just” have to write the code that does (1) for other sync solutions.

The problem is that for each sync solution, I pretty much have to code from scratch what the sync provider’s desktop client does automatically. There are 4,000+ lines of code in my Dropbox sync file (probably 2,500+ once you remove blank lines and braces). And that’s for an API that provides an Objective-C wrapper (i.e. a wrapper in the language I use). For other APIs, I would have to replicate everything this does, but it would take more code because few, if any, of the other APIs have Objective-C wrappers, meaning I would have to write lots of code to wrap around the raw server calls.

It wouldn’t be so bad if the APIs provided by sync providers could do exactly what the sync clients do on the desktop. For instance, with Dropbox, on the desktop you just install the Dropbox app and that automatically syncs all the files in the Dropbox folder across machines and with their servers. It would be wonderful if the Dropbox APIs did the same, because then I could just write code that said, “Hey, Dropbox API, sync everything in this folder with the same folders on your servers.” That’s not how it works, however. Instead, I have to write code that replicates what Dropbox do for free on the desktop. I have to write the code that says, “Check what’s changed online, download this, and upload this. Create this folder, and make sure you create all these folders before putting files in them. Oh, and this file seems to have changed in two places, so rename one version and place it here, and upload the other here. Delete these files.” I also have to deal with storing a cache of the current folder state after a sync so that I can compare it to the Dropbox servers and the latest folder state when syncing to see what has changed.

All of this was a couple of months’ work at least. To add OneDrive support and support for other, similar solutions, I would have to do all of this again, plus the extra code (and learning time) to create my own wrapper for their server calls. So you are looking at probably a couple of months of coding for each sync solution.

I certainly don’t rule out adding support for other sync solutions in the future, but it won’t be for a little while. Things are further complicated by the fact that Scrivener uses Dropbox API 1, because that is the version of their API that has an Objective-C wrapper. But Dropbox has just deprecated API 1, and are turning it off entirely this time next year. But their Objective-C wrapper for API 2 won’t be available until August. This means that later this year, I am going to have to rewrite a lot of the Dropbox syncing code to support Dropbox API 2.

In other words, it all comes down to the practicalities of being a tiny team (i.e. a one-man coder in this case, as I’m the sole coder for macOS and iOS).

Now, at some point I do need to find a second developer to help me, and I want someone with sync expertise. That might open up possibilities. (Another practicality there is that we don’t even have offices, though!)

I hope that all makes sense and doesn’t come across as making excuses. :slight_smile:

All the best,
Keith

I’m a longtime Dropbox user and fan and am perfectly content to use it with Scrivener. However, if the main problem is the rtf packaging, might it someday be possible to permit iCloud syncing with writers who choose to use text-only Scrivener projects? I guess they can always use Ulysses or iAWriter or others.
Also, does MacOS Sierra’s newly added capacity ito allow iCloud sync with the Desktop and Documents folders possibly suggest that a solution may arrive from Apple? Or is that even relevant? (I’m not a coder.)