This morning my 1.1 update for Repeat got approved on the store, which brings some basic improvements to interaction with tasks, a much nicer visual for repeat history as a calendar view, rather than as a simple list of events, the ratings system I wrote about in a previous post, and a Today Widget containing upcoming alarms along with an indication of how close they are.

Since I’m still learning my way around the iOS frameworks it’s been an interesting experience, particularly with respect to the way that Core Data works. When I first started looking at using Core Data, and coming from having done stuff with SQLite and MySQL in the past, it seemed pretty terrible in terms of the overhead of code compared to what you actually wanted to do with it (OK, it actually still seems pretty terrible in that respect).

Some of the things I learned about Core Data:

  • I found it surprising that the automatic migration functionality wasn’t the default, so that minor changes to the schema would crash your application from build to build. At least it was a simple process to get it to migrate on change.
  • Extensions that require access to Core Data are a bit of a headache to set up, requiring shared containers to be created, and the extraction of the default methods for data access from the App Delegate so that they can be shared across the project.
  • I’m going to have to write a lot more code using Core Data before any of it feels anywhere close to natural.

It’s been interesting having analytics baked into the app from before the first version was approved. I decided to go with the Flurry analytics package after doing a bit of looking around and finding it relatively easy to integrate into a Swift app, and probably over-populated the app with event logging as a result.

No information is logged beyond the first dot point, just usage pathways, so that I can look at:

  • how many times a day tasks are set for when created (nothing about the task)
  • whether tasks are edited, or just set and then used the same way until deleted
  • whether anyone uses the help screens
  • when the app is rated, whether it’s fired off from the About screen or from the heart button that pops up in the toolbar (or neither I guess)
  • how often alarms are used and updated

Since it hasn’t been very long since I released the app, and I’ve done zero advertising for it beyond this blog, the only detailed info I’ve had is from the app review process. The initial approval process did some moderately detailed testing, going through task creation, usage, editing, alarm setting and so on. Oddly enough, for 1.1 the reviewer seemed to do virtually no testing at all beyond creating and deleting a task. This despite changing the way tasks were interacted with the new calendar view and the Today extension.