Home > Features > iCloud and real-time syncing of data

iCloud and real-time syncing of data

November 29, 2011

As I am getting many requests per week asking about iCloud support and real-time syncing between devices, I thought I’d add this post to explain the current situation.

None of my apps support iCloud today (in fact very few do!!). However they all support the ability to backup your data, copy it between devices, and restore it. Of course what you all really want is the ability to change something on one device, and have it magically appear on the other, perhaps even having two people do updates simultaneously. There are many issues with this, some of which are helped by iCloud …

1) your data files can get quite large, especially with lots of transactions (e.g.). Copying to the cloud, and downloading this again could potentially take minutes or longer. So when do you do this? It would be frustrating at launch time, and you can’t wait until you press the Home button to copy back to the cloud as you only have 5 seconds of execution time for background processing. iCloud helps with this (a lot), letting you copy data locally, and it handles the copying in the background.

2) conflict resolution. While it sounds easy, what if two or more devices are offline for extended periods, all editing the same data. When they reconnect to the cloud, it all needs to be sorted out. This is especially difficult, and Apple have left it up to us developers to sort out (they can’t solve it for us, as we all store data in different formats).

UPDATE (8th December):

I plan to support iCloud in three steps. The first is to use it for backups only, a bit like Dropbox works today. When you make a backup, this will be copied to iCloud and then (over time) pushed to all of your other devices. Your other devices will see this new file in seconds, but if it has not been downloaded, it will be displayed in grey. Tapping on it will force a download, then tapping again will let you restore it. I have all of this working in Account Tracker today, so it will be in my next update (other apps will get this too).

The next step is more complicated, and that is to allow your data to be pushed to the iCloud automatically (without backing up), such that other devices can always be using the latest data. While this sounds simple, there are a few issues to resolve first (like preventing simultaneous updates, and when to copy your data).

Finally, the highly complex issue of syncing simultaneous changes needs to be addressed. This is likely to take time to design and implement a workable solution. Please be patient! 🙂

  1. Sid
    February 5, 2012 at 6:34 pm

    Hi Graham,

    Realise this is a late comment on an old topic. My question is: will multiple different iCloud users be able to sync to the same account tracker database? I assume not because of the way iCloud works.

    I ask, because this is what I think I will need if I want to share all account tracker data with my wife.

    Be interested in knowing whether it will be possible to do this (in the future).

    Thanks,

    Sid

    • February 5, 2012 at 6:43 pm

      Hi Sid, no – iCloud doesn’t work that way. You would only be able to see files in your own iCloud account. Dropbox could work, but you dont have the ability to silently push changes to/from Dropbox due to the time it takes (iCloud is all local to your device so doesn’t have this problem). This is why you have to manually push and pull your data today.

      • Sid
        February 6, 2012 at 7:25 am

        Thanks for the quick reply!

        Didn’t think it would be possible, which you confirmed. Had a look at another app which has a ‘family sync’, but it does seem to be a bit of a pain to use and setup – and, of course trust required to sync to the cloud anyway.

        I think for me I’ll just have to make sure I put all our accounts on the one iOS device.

        Sid

  2. John Brookes
    December 23, 2011 at 2:35 pm

    Hi Graham,

    I’ve been using AT for over 2 years now and really can’t live without it. I really like how in this time the app has evolved but the core functionality has never been lost.

    I’ve only just found this post and have been thinking about it briefly. Without knowing how you currently handle the transaction database and backups I could be well of the mark, but is the way to make the fullest use of iCloud to allow it to see and handle data at a transaction level.
    I make this suggestion as from reading many of your support posts on the topic it seems that the data size vs speed trade off is a key issue to implementing sync features. If it is possible to acheive I imagine that following an initial “Setup for iCloud” type event to sync the full database the app would then only need to sync/push the items that have changed, greatly reducing the volume of data transferred at each sync event. One off backups of the consolidated database could potentially still be implemented at the users discretion.
    Now I can see that the difficulty comes in flagging items as new or changed but it was my, granted very basic, understanding that Apple foresee this type of syncing arrangement and so will have created some method to achieve this.
    Of course I’m not a developer and would happily accept a response telling me this can’t or won’t work.
    Either way having seen how the app has already evolved I know you will find the best solution you can.
    Once again thanks for a great app.

    Kind regards,

    John

    • December 24, 2011 at 4:35 pm

      Hi John, yes you are right, saving changes is the way to do it, however before iCloud even this is problematic as you don’t have much time to push data off the device once you press the Home button. However with iCloud, this copy happens locally on your device, and then Apple syncs the data to your other devices in the background. You still need to handle conflict resolution, which is still a BIG problem, but it should be do-able.

  3. John Ainsworth
    November 30, 2011 at 1:13 pm

    Hi Graham,
    I’ve noticed all the requests you are getting for this feature but doubt whether many users appreciate the complexity involved in achieving this. My own file has become a little unwieldy since I copied past transactions from MS Money into it as it now constitutes about 15,000 transactions and this slows it down in some areas quite a bit. Specifically when entering a new transaction the Details field takes about ten seconds to become active and a backup takes more than thirty seconds, so I hate to think what effect having to copy to and from iCloud would have. I think your first solution, just auto backups via iCloud, is a good compromise and could perhaps, at least, be a first implementation. I’m not sure how option two would work; are you saying, for instance, if a user has AT on an iPhone and an iPad and his partner has another copy on their iPhone there would be three copies of the file in iCloud? Ideally there would be only one copy in iCloud, accessed by all users, and with transactions being posted directly to it. This would satisfy the requirement but would need access to iCloud at all times which is not realistic.

    Being selfish I am happy to continue with the Dropbox facility and would rather you developed an archive facility so I can reduce the size of my file while retaining the ability to look back whenever I need to.

    Whatever decision you make I’m sure all users appreciate the thought and care you are giving to the development of what is already a very valuable app.

    Best wishes, John

    • November 30, 2011 at 7:38 pm

      Hi John, by option 2, all i mean is that a copy of your settings and data is permanently stored in iCloud, meaning you don’t actually need to make a backup at all. This still doesn’t solve the syncing/merging issue, or having multiple people/devices accessing the same data.

      • John Ainsworth
        November 30, 2011 at 10:05 pm

        Hi Graham, Thanks for the clarification but wouldn’t this mean that when no wi-fi or cellphone signal AT would not be accessible?
        John

        • November 30, 2011 at 10:13 pm

          Hi John, no, the iCloud version would just be a copy. If you didn’t have network access, the app would work with its local copy and would push to iCloud when it reconnected. TBH I’m not 100% sure that this option would be useful.

  1. No trackbacks yet.
Comments are closed.