Syncing between Mac & iOS

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.)

Short version: iCloud does not handle the links between components of a Scrivener package correctly. For example, it’s not possible to ensure that the .scrivx file (the master index used to build the Binder) matches the actual document files present in the project. The use of RTF files has very little to do with it.

Longer, more detailed version here:
literatureandlatte.com/blog/?p=713

Katherine

I guess I gotta chip in with this discussion. I’ve been a Scrivener User on the Mac for a long time and have been patiently waiting for the IOS version, you all know how long.

Now the wait is over over and I actually really like the IOS version, I think other than the mess of sync its a great app, especially on my iPad (I live on a boat) but even on the Iphone its a great tool. So no doubt, great job on the IOS version with the exception of syncing.

What is of course totally unacceptable is the choice, or lets say lack of choice in regards of syncing. I will NEVER put my creative work onto DROPBOX. All I want is plug my iPad or iPhone into my MBP and have it synced. Most of the time when I am writing, or come back from a remote sailing and writing trip I want to finish organizing my thoughts and I don’t have ANY need for an internet connection in this case. In fact, other than for occasional research work an internet connection is totally counterproductive for creative work. Just MHO.

Your argument that a Dropbox account is FREE, is total nonsense. You pay with your private data which they sell to third parties, that’s not FREE. It should be illegal to call data mining services FREE. Last time I checked, Mother Theresa didn’t work for them so I don’t think their altruistic streak is very pronounced :wink:. Dropbox, FB, Google, and all the other cloud vultures have created billions of $$$'s from luring unsuspecting users into giving them their data for free, that’s the only free part.

Because I really like Scrivener very much and of course as I have invested years into learning and setting up in Scrivener, I did try to find workarounds to sync between my three devices. But copying complete project files around is cumbersome, prone to failure, and defies all benefits of having the same SW on multiple devices. You change one line of a lyrics or a poem and have to make a note so you remember. Or constantly rename project files. Its a clear recipe for data loss and/or the need for sophisticated manual version control. That’s 1970’s syncing technology.

Your explanation that this is all iClouds fault, is pretty lame. I’ve been in SW R&D for a good part in my life. Yes, syncing, depending on your file model can be a tad complex. I understand that by using Dropbox’ s built in sync algorithms you saved a lot of time as you had no expenses coding the sync yourself. The ones who are paying the bill to Dropbox are the Scrivener users with their data. But there is tons of ready code out there to do the sync work. To force your customers to one of the worst cloud data collectors is ridiculous and unacceptable especially for creative people.
Its like Google’s Analytics and Adsense cookies (which run on Dropbox too). These are tools given to developers for FREE so they put it on their websites so they can milk the private data from the website visitors.

There may be people which are OK with the big brother data collection and sharing machine. Many, including myself, ARE NOT.

So if you really have no plans to support users with a privacy conscience, say that loud and clear. Don’t blame Apple or say maybe we do something if they change their iCloud file model. In may case I’d have waited in vain for the IOS version and that be the end of the Scrivener rope for me. Then I can keep writing as before in IOS notepad and use copy and paste to get it into the OS X version. I am a writer, not a file administrator. I’d would have been better served if you’d have made that clear much earlier then I could have acted accordingly. I have to say very clear that I feel very neglected in my sync needs and that until I read the manual and worked with the new SW I wouldn’t have been able to believe that you simply skipped on the most basic form of syncing projects between devices and tried to hand me over to Dropbox.

well, there is always hope. I see that I am not the only one in need of bare bone syncing without internet connection. I am looking forward for a quick resolution of this major usage shortcoming and hope that you will tackle this very soon.

all the best

cheers

Ernie

//////////////////////////////////

just read the Dropbox Privacy Policy and check outgoing traffic with tools like LIttle Snitch, see which trackers run while you are on Dropbox (with Ghostery for example) and it will make your skin crawl and you will never again put a single bit to their servers.

Exactly what do you expect L&L to do when Apple’s own sync protocols mangle packaged files – the underlying APPLE technology that supports the Scrivener file format?

No, seriously, what do you REASONABLY expect L&L to do in this situation when not even Apple has bothered to get their product working with their own technology? Come up with their own sync protocol? Even with existing code and APIs, we’d be waiting for the iOS version for another five years. L&L had to use a pre-existing engine. (That’s like expecting a game designer to write their own engine instead of using Unity or one of the other choices out there.)

Dropbox is the only widely-used cloud sync application that supports OSX, Windows, and iOS (and looking toward the future, Android). Yes, there are others out there that support all those platforms, but they don’t have nearly as many users. At least with Dropbox, the majority of people who are the target audience probably already have a Dropbox account and are familiar with it. OneDrive is right there with iCloud – not up to the task. Writing code to support a sync engine has no single well-defined API all sync providers use so you can write once and let the user pick their favorite sync client/engine.

L&L offered iOS users a choice – do it without the wire via Dropbox, or use the wire with iTunes. They’re not forcing anyone to use Dropbox. Just because they made the choice YOU don’t like doesn’t mean it was the wrong one to make.

Have you checked how to sync via iTunes?

“… while you are on Dropbox”? Could you explain what you mean? When am I on Dropbox?

Novelist, given your preference for working without an internet connection, the point made by Lunk and Devinganger bears repeating. You surely missed the option for syncing using direct USB connection via iTunes. No internet connection required, I believe. It seems that would perfectly suit your use case, omit the need to use Dropbox and considerably decrease your stress levels.