Today we launched Explore Michigan 2.0 on the App Store. We are very excited to get this update out because it is the culmination of over a year of work.
A lot of the work we have been doing over the past year has been to rewrite the API that supplies data to the application. The old API we were using was backed by Apple’s CloudKit technology. This was a solid solution and served us very well for over 2 years. However, there were several problems with that solution that prevented us from updating the database as often as we would have liked. The new API has several new features that we are really excited about.
Robust Location Data
Here is the list of data included in the previous version:
- phone number
- location coordinates
On top of that, the new API can provide the following:
- ADA accessibility info
- website for making reservations
- social media accounts (Instagram, Facebook, Twitter, Pinterest, Snapchat, YouTube)
- resources (maps, brochures, informational pamphlets)
- hours of operation
- seasonal operation information
- admission fees
- location specific activities (hiking, swimming, camping, archery, basketball, etc.)
The second list is quite impressive! There is so much potential in the new API that we are only taking advantage of about half of the new features. We will be working over the coming months to populate the database with as much information as possible.
Dynamic Data Model
It was extremely difficult to add new types of locations to the old database. So, if we would have wanted to add a new type of location, like golf courses, it would have taken a lot of effort to update the database and app to support the new type of location.
The new API is built to be dynamic. We can easily add new types of locations to the database and the app is built to automatically display the data when it is available. The only thing holding us back from adding additional locations like golf courses, theme parks, ski resorts, etc. is how quickly we can add data to our database!
This is a little bit nerdy, but the API is written 100% in Swift. Swift is Apple’s relatively new open source programming language. It is the same programming language that the iOS app is written in. It was a lot of fun to write and I have been very impressed with how performant the API has been.
Underneath the covers, we have implemented a user account system. Right now it all works behind the scenes. When a user downloads the app, a new “anonymous” user account is created. That user account isn’t used right now, but will enable us to add features down the road that might require a user account like user reviews/tips, location ratings, data syncing, reservations, recommendations etc.
New iOS App
The iOS app is also brand new. We rewrote it from the ground up and it is also 100% Swift. Rewriting the app allowed us to address many of the bugs and issues that the old app had.
One of the annoying issues we fixed was with cluster map annotations. In the old app you had to pinch and zoom to see what was in an area marked by a cluster annotation. In 2.0 you can just tap on the cluster annotation and a preview drawer will slide up from the bottom to give you a preview of all the locations represented by the cluster annotation.
Map annotations now have unique icons and colors to help you visually distinguish between different types of locations.
You can now select what types of locations you want displayed on the map or in the list. It’s nice to be able to clean the map up and only show location types you are interested in. It makes it much easier to find a specific kind of adventure.
Locations now have resources like maps and brochures available to download directly in the app. These provide great information that was previously only accessible through a location’s website.
Right now we don’t have any locations in the database that have any activity data, but the app does support it. Many types of locations have different kinds of activities that you can do at the location. For example, a state park might have activities like camping, hiking, biking, volleyball, swimming, etc. The app will show you a row of icons indicating the available activities. If you tap on an icon you get detailed information about that activity at that specific location.
One of the things we focused on for this release was accessibility. The database now has a flag that indicates if a location is ADA compliant. We don’t have this information for a lot of places yet, but we will continue to add more locations over time. If you know of a location that is ADA compliant let us know! firstname.lastname@example.org
Another part of our accessibility focus is with the app itself. Explore Michigan 2.0 now supports Dynamic Type. Here is a brief description of dynamic type from Apple’s website:
The Dynamic Type feature allows users to choose the size of textual content displayed on the screen. It helps users who need larger text for better readability. It also accomodates those who can read smaller text, allowing more information to appear on the screen. Apps that support Dynamic Type also provide a more consistent reading experience.
This means that more people should be able to access the information provided by Explore Michigan. We want to make sure as many people as possible can enjoy Michigan’s beauty.
Social Media Accounts
Did you know that your favorite locations have social media accounts? Neither did I until recently. Having access to location specific social media accounts is great. It makes it really easy to follow your favorite locations on social media and get information directly from the source.
Favorites was one feature that we were unable to bring over from the previous version. With the new API we had to make a few changes to how favorites work and are planning to bring the feature back in a future update.
And Lots More!
There are a few more features that the app supports but you can’t experience because there isn’t any data for those features in the database. Once we add data to the database to support those features, we will write a short post introducing the those new features.
We are super excited about this new technology and how it will help us provide you with even better information. We are already hard at work adding more information to the database and implementing new features. If you have any ideas about how we could improve the app, feel free to let us know on social media or email us directly at email@example.com!