Skip to content

iCloud Syncing #2

@ianclawson

Description

@ianclawson

Probably the biggest issue the app has to this day is the lack of syncing functionality. This is the source of so much frustration for teachers.

In short, the Rewards/Props/Students that they spent so much time creating and curating in the application are not carried over when they upgrade their iPhone or iPad. So all their progress is lost, forcing them to start over. Not good at all. Very frustrating.

So many applications have it right out the box these days that users expect the functionality to be there, and are confused/frustrated when it isn't there. It's easy to take for granted, because it's actually a difficult thing to do.

It's a premium feature. But Stars 2 Apples claims to be a premium app, so it should have this functionality. We have heard the frustrations involved with not having syncing, and we know this is something that we must do.

Reasons I couldn't implement syncing before:

  • iOS <-> Android syncing requires much more effort
  • the Database system I'm using isn't friendly towards syncing

Now that Android is postponed indefinitely (possibly forever, see #1 ) that opens up iCloud as a possibility, and I have find libraries online that claim to bridge the Realm <-> CloudKit gap, so it seems like a possibility now more than ever.

Background

Syncing was intentionally left out of Stars 2 Apples initially because of the difficulty involved with implementing it. We didn't know if anyone would download this app (which I was making solely for my wife who taught online ESL at the time), so it wasn't worth the effort.

Once people started downloading the app, we heard right away that it should have syncing, so we put it on our roadmap. At the time we were planning on having an Android version of the app, which complicated syncing even further; we would need to use an agnostic server to manage all of the data, a server I would need to write and maintain myself. That meant that the syncing feature was going to be a very large lift, so it kept being delayed and delayed almost indefinitely.

But then something changed, and now there is a plan.

The plan

We made the decision to no longer try to release an Android version of Stars 2 Apples (see #1 ). Although the decision was sad and hard, it does have a silver lining for syncing!

There are servers and software that already exist to support syncing files between iOS devices that share the same Apple ID, so I can begin to implement those APIs.

Also in recent months, there have been libraries released that claim to help the database system I'm using with syncing, so that's exciting!

Both of our blockers are now gone, so I just need to spend time working on this feature to release it. Looking forward to it!

Dev considerations

  • This may necessitate an interface for optionally installing the built in rewards so that they don't automatically sync and take up room. I was thinking to maybe leave them out, but given the relational nature of the db this may be needed. Or, because the uuids in the preloaded bundle will always remain the same, perhaps leaving it out is a possibility. It remains to be seen.
  • I'm worried it will be too difficult to implement syncing properly using realm, and that will necessitate migrating off of realm and onto something like GRDB. Which honestly would be nice moving forward, but a loooooot of upfront work. 🤞

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions