EasyRoute and iOS 13

I figured I should address this as it is becoming a big problem.

iOS 13 largely breaks file sharing between apps. This means when you export your route as a GPX or FIT for consumption by Wahoo or Garmin apps, they might not show up as open-in options.

This seems to be a widespread problem and Apple seems to know about it.

Myself and some colleagues have looked at the problem from multiple angles, but there really isn’t much as app developers can do at the moment. Even if you first save the file to the Files app and then share the file from there, the app you want to open it in will still not show up.

Otherwise, regarding something I do have control over, I’ve heard some feedback about the dark mode maps, particularly from color-blind users. The next release will have an option to force the light maps on even when in dark mode.

Posted in Uncategorized | Comments Off on EasyRoute and iOS 13

EasyRoute 3.2.3 – A Few Notes

A bit of a random release. I just wanted to release a few things that were ready to go.

A Setup Process

There is a new a setup/welcome prompt that takes you through some settings that might be easily missed. If you’ve been using the app, think of it as a tune-up. Otherwise, it should help new users set their preferences to their liking.

Dynamic Text

I’ve been meaning to get to this for some time, but the text sizes on the route list and a number of other places in the app will scale according to the system-wide setting. There are a few views that won’t be so straightforward to support, so they still have a fixed size for now, but my aim is to support dynamic text throughout the whole app at some point.

Record to Health with Apple Watch

Okay, so I said many times I didn’t want to turn EasyRoute into a workout tracker, but I was using the route-following feature alongside other Apple Watch workout-tracking apps (like the built-in one and the Strava app) and felt compelled to experiment with it. Also, the more I used it, the more it felt like the lack of Health tracking was an omission.

So now, if you flip a switch before following a route, a Health workout will be recorded as you follow the route. There is a new screen to the right of the route screen that will show some basic stats while you’re in-progress.

The thing is, this was a lot of fun to work on! I was training for a marathon (but got sidelined, so settled for a half) and it was pretty cool to build and tweak it for what I needed week-to-week.

As I expected though, the ways I can expand on this are endless. It opens the door for a whole new app to grow out of EasyRoute, which is tempting, but there are still a lot of route-planning features I want to do so I’m releasing what works well right now for anyone who might want to use it and moving on to some other cool route-planning features I’ve got cooking.

Why is it only supported on the Apple Watch? Well, I think it would look and behave pretty differently on the phone and I’ve got it working nicely on the watch at the moment so am just releasing that for now.

As usual, if there are any comments, questions or feedback, the best way to get me is through my contact page.

Posted in Uncategorized | Comments Off on EasyRoute 3.2.3 – A Few Notes

EasyRoute 3 — Follow Your Route

At long last, EasyRoute 3 is here! Available for the iPhone, iPad and Apple Watch.

The big new feature is route guidance. You can now follow your route with EasyRoute and it’ll let you know when you need to take action to stay on course.

I’ve actually been working on this, on and off, for close to three years. I’d spend a little time on it, put it aside for various reasons, and eventually come back to it. Finally, after this past summer’s releases settled down, I decided to make an effort to push it over the line. After logging many miles with it guiding me through various neighborhoods and a pretty long beta period, I think it’s ready.

I also considered letting it record the trip as a workout too, but, for now at least, it’s just there for guidance. Turning EasyRoute into a full-blown workout app would be a big project so I thought it would be best to leave that to the many apps that already do this very well and have EasyRoute provide guidance alongside them. So, you can continue using your favorite workout app and have EasyRoute in the background notifying you when it’s time to take action. Alternatively, you can keep EasyRoute in the foreground too if you want to keep an eye on the upcoming turn.

I also felt it was important to provide some ways to review and customize the route so you can ensure it’s providing clear enough guidance. I added a directions-editing mode that allows this as well as a preview you can look at before starting the route. Even if you use EasyRoute to make routes for your bike computer, these can help you review the route before exporting it.

If you go off course, EasyRoute will let you know and provide some basic instructions to get you back on route, but if you get too far, it’s not going re-compute the route. This is coming in a future release.

As always, the best way to report bugs or give any kind of feedback is my contact form.

I hope you have as much fun using it as I did making it and, as always, be safe!

Posted in EasyRoute | Tagged | Comments Off on EasyRoute 3 — Follow Your Route

EasyRoute 2.10 – Switched to Mapbox

As I mentioned last time, EasyRoute would shortly be changing its maps and data source to Mapbox and now, that moment has arrived.

Everything is intended to work as it did before (with one big exception) but there are some places where the generated route is different than before. I am still finding ways to tweak this and if something doesn’t seem right or if you discover a bug, let me know.

The one big exception I mentioned above is Street View. Google only allows Street View to be used with a Google map and since that is no longer the case, I cannot embed it directly in EasyRoute anymore. However, I can launch it externally and if you have the Google Maps app for iOS, it’s almost as nice as it was before. It’ll automatically open to the Street View panorama at the location you selected in EasyRoute and getting back to EasyRoute is just a matter of hitting iOS’ built-in back button in the far upper-right corner.

Some of you wanted an in-app purchase to remove the ads. While I had always intended to do this, I decided to withhold it until the Mapbox conversion was complete. I didn’t want to start collecting money from you, and then soon after, abruptly change the app in a major way. The in-app purchase is now available so you can evaluate the Mapbox change before giving me money.

With this recent flurry of changes, hopefully EasyRoute can sustain itself. Mapbox is really the only expense now and their rates are reasonable. If you’re kind enough to report bugs or problems, I’ll take care  of them. (I noticed a couple of minor issues myself while planning a bike ride myself this weekend.) Also, I think I was pretty close to finished with my next major feature before this whole Google pricing thing became an issue so I’ll hopefully be able make that available soon too.

Posted in EasyRoute | Tagged , | Comments Off on EasyRoute 2.10 – Switched to Mapbox

EasyRoute 2.9 and the plan going forward

EasyRoute 2.9 is out. Here is a rundown of what’s new:


Back in December, I removed the $0.99 price tag on EasyRoute. I did this for a few reasons, but in the end, I enjoyed setting it free more than the slow trickle of revenue it produced when it was $0.99. However, it became too popular and I can’t skate in under free limits of the services I use anymore (which used to be Google and MapQuest, but is now just Google) So having the app available completely for free (and ad-free) was starting to cost me some money and since the usage trend is still upward, this was a change I had to make.

Update: I’ve already gotten several questions about removing the ads with an in-app purchase. Since I will be making a significant change to the app (by changing the map, see below) I didn’t think it would be fair to start collecting money and then, right after, make this change. The next release will have the option to remove the ads.

Better Map Options View

I used to have a little floating arrow along the right edge of the map and I was never crazy about this. I moved it to the toolbar (which is where it has always been on the iPad) and made the view more compact (again similar to the iPad). There’s a revamped general information view in there too with help and links.

Route List and Route Types

I made some small design tweaks to the route list along with a better way to bulk edit or delete them. There is also a route type (Run, Bike, Walk, Generic) that you can assign to a route. Your old routes will default to generic, but you can select and change multiple routes on the list if you want to tag them correctly.

The Next Major Release

…is right around the corner! Yes seriously, and this is somewhat related to the above.

I’m going to have to switch away from Google’s map and data.. and soon! I had been reviewing Google’s new pricing, which goes into effect on July 16, 2018 and it seemed as if the new plan would cost EasyRoute roughly 30x more than before. I actually contacted Google because I didn’t think I was calculating this correctly and they confirmed it. Ad revenue beyond my highest estimates wouldn’t even begin to cover this, so I’m moving to Mapbox.

I am close to finished with the conversion and there are some upsides as well as some disadvantages. I’ll explain more once that release is ready, so I’ll be back here with more news soon.

Thanks for reading. I hope you’re having fun with EasyRoute!

Posted in EasyRoute | Comments Off on EasyRoute 2.9 and the plan going forward

EasyRoute 2.7 – iPhone X, FIT Export and ELEMNT

Today’s EasyRoute release delivers a few nice things while setting the table for even bigger features. Let’s dive into it.

First, let’s get the simple one out of the way — iPhone X support. It uses the whole screen — no more black bars.

The next big one is FIT export with turn-by-turn directions. Any new route created with EasyRoute 2.7 or later will internally contain turn-by-turn directions too. When exporting to a FIT file, these directions will be included. The benefit here is any device that supports FIT course files and turn-by-turn directions should be able to take full advantage of this.

A perfect example is the ELEMNT (and ELEMNT BOLT) bike computer by Wahoo Fitness.

Simply tap the share button in EasyRoute, select Open FIT in other app and select the ELEMNT companion app.

The ELEMNT app will import the route. At this point, you can sync it to the ELEMNT with Wi-Fi or simply select it and it’ll be transferred automatically via Bluetooth.

I should add that since the middle of 2016, I’ve been a Wahoo Fitness employee, but since EasyRoute exports a FIT file, there no reason other devices from other companies couldn’t utilize it. I will admit, I did a little extra work on the Wahoo side to ensure it was smooth, though.

Finally, I’ve always changed the minimum Apple will allow (US 99¢) just to offset a few hard costs, but I’m changing the price to free. Enjoy!

Posted in Uncategorized | Comments Off on EasyRoute 2.7 – iPhone X, FIT Export and ELEMNT

Animated Spinning Wait Images for WatchKit

There is no equivalent to UIActivityIndicatorView in WatchKit, but I have a situation where I want an Apple Watch app to display an image generated by its companion iOS app, and I want to indicate the possibility of a short wait.

Luckily, WKInterfaceImage is capable of displaying an animated UIImage. We can craft a series of images that look similar to the familiar spinning wait indicator, use them to create an animated placeholder image and simply replace it when we receive the final generated image we were waiting for.

It was a bit of an annoying distraction to have to make this, so I figured I’d share it and maybe save someone else some time. (Clarification: it started out as an annoying distraction, but I ended up enjoying writing it anyway.)

Posted in Swift | Comments Off on Animated Spinning Wait Images for WatchKit

EasyRoute 2.6 Status

Today, version 2.6.4 of EasyRoute was released to the App Store. The fixes are relatively minor, but I’m happy to be fixing minor issues versus having to sweat out potentially large issues.

Last time, I wrote that the big new iCloud feature in 2.6 may have blown up in my face. After hearing from more users and seeing some more data, I think it largely went OK. There ended up being just two reported iCloud problems and a few crashes. The crashes were easy to pinpoint and I got fixes submitted to Apple quickly.

The reported iCloud issues did scare me into adding some safeguards though.

When EasyRoute requests files be put into iCloud, iOS moves these files into the iCloud container, meaning the originals are gone. If iCloud is misbehaving for some reason, your routes will be unavailable. After the initial 2.6 release, I added a fail-safe so if the iCloud sync doesn’t work as expected, you can turn iCloud off and be offered the option to restore your routes from the fail-safe.

This means you can safely attempt to turn iCloud on. If syncing goes bad and the routes are not available, you can turn iCloud off and restore from your fail-safe.

Yes, it’s a workaround, but no routes will get lost in iCloud this way. At this point, I think its an uncommon problem, but I feel better knowing the fail-safe is there.

The most frustrating part of the whole thing was having users with problems I couldn’t reproduce. iCloud syncing works beautifully with my devices (the “works for me” problem) and, if anything, I thought the routes would be safer in mirrored into iCloud than just stored on the device.

As I said, there were only two reported problems, if you turn iCloud on and have problems, let me know.

Posted in EasyRoute | Comments Off on EasyRoute 2.6 Status

A Bad EasyRoute Update

Time to face the music.

On Monday, my iCloud update for EasyRoute was released. This was my longest release cycle for a lot of reasons and I actually sat on this release for a few weeks after I thought it was ready, just to be sure.

Unfortunately when I finally released it, I got reports of routes disappearing. To top it off, even new routes would disappear.

I have a theory as to why this is happening, but I certainly didn’t see it coming.

There are two things that happen when you first launch version 2.6. First it turns the routes into documents, then, if iCloud is enabled, moves those documents into the app’s iCloud container (really just a special directory) for syncing. Once in the iCloud container, they should get synced to Apple’s servers and to your other devices.

Well, unfortunately it seems this sync can go the wrong way and wipe the container. The fact that even new routes get wiped out shortly after being created supports this theory. I’m guessing the initial move to the container is wiped out, and since iCloud insists the “truth” is that the container is empty, keeps removing anything else put there.

I saw things like this happen when trying to sync the old data store (which was Core Data). It would seem to be alright, but often there would be a bad sync and data would be lost. This is the main reason I moved away from Core Data, because I just couldn’t make the iCloud sync work reliably. When I tried this with documents, it worked great. Also, the routes-as-documents approach is much more straightforward. I think the result is much cleaner.

So, upon learning of the syncing problems, I reviewed everything. I checked with some of my testers, but was unable to reproduce it. I had no choice but to disable iCloud-by-default and try and get a new release out as fast as possible.

Luckily, despite my request for an expedited review being denied, version 2.6.1 got through the App Store the same day. The problem isn’t fixed, but it is sidestepped and hopefully, at some point, it will occur to me how to eliminate it altogether.

So, the option is still there in the Settings App, but off by default. I wish I knew exactly how many people the sync fails for, but getting 2 reports in the first day is enough for me to say it’s not reliable.

Finally, I feel terrible that this happened…

EasyRoute isn’t my day job, it is my labor of love. I created it to fit my own needs and it’s been fun adding features and tweaks for cyclists, walkers and even motorcycle riders! (I definitely wasn’t thinking motorcycles when I started this.) There’s been lots of response from all over the world and it’s been fun getting to know my users. Now, I feel like I let everyone down. My name is on this program and until yesterday afternoon, I was quite proud of how it had come out.

So, to anyone having issues, I’m deeply sorry.

If there are still any problems with 2.6.1. Let me know, I’m listening. My contact page is the best option as I see messages left there right away.

Posted in EasyRoute | Comments Off on A Bad EasyRoute Update

An EasyRoute Update for iCloud

Version 2.6 of EasyRoute was approved and released by Apple today! The big new feature is iCloud syncing.

In order to sync your routes across your devices you only need to be signed into iCloud. That’s right, all the syncing is done behind-the-scenes for you. This means if you create a route on your iPad, it should be available on your phone. (This is the case I see being common — making a route using the larger iPad screen and then having it available on your phone.)

There are some other smaller fixes, but the iCloud stuff kept me busy enough, so I didn’t want to introduce too much else in this release.

The best thing is, the internal changes required for iCloud also helped set the stage for some cool stuff I have planned for future releases, so stay tuned!

Posted in EasyRoute | Comments Off on An EasyRoute Update for iCloud