App extensions were introduced a couple of weeks ago during WWDC 2014 Keynote as a way to extend the reach of your app to some parts of iOS (8), for example by creating a widget that will show up in Notification Center, or a custom sharing action. It’s no doubt a huge opportunity for iOS/Mac developers, so if you have an idea for a widget/extension, I suggest you start working on it as soon as you can.
If you are a registered iOS/Mac developer, definitely watch the WWDC Sessions Creating Extensions for iOS and OS X, Part 1 and 2 here. You will have a pretty good idea of what extensions are, how do they work and what you can do with them. The first part briefly explains how you can share data between your extension and containing app using NSUserDefaults, but neglects to point out some ‘pitfalls’ that you need to avoid in order to get it working. That’s where this tutorial comes in.
Warning: as of writing this (end of June’14), the Xcode 6 beta 2 (that you need to use to build your extension) has some bugs that might cause you some annoyance, but you can generally track down and then avoid the certain actions/scenarios that make problems.
What are you going to build
We are going to build a simple Today extension (that’s the name for iOS 8 widgets in Notification Center) that shows a number that can be set from the containing app (and changes made in the app will be reflected in the widget in real time). We’ll use shared NSUserDefaults to accomplish this.
Since there is just little over a month left till this year’s Worldwide Developers Conference, I thought it would be a good idea to sit down and write a simple guide for people who are attending the conference for the first time.
You’ve wished to get there for years, you might have missed the ticket sales last year (or the years before that), but now you’ve won the ticket lottery (or student scholarship) and you just can’t wait for the whole experience. You feel like a kid before Christmas! Am I right? You also probably want to get the most out of it, and that’s where this blog post comes in.
I was lucky enough to attend the WWDC last year (more about that here), so I have some experience with it. I am aiming to include here all the tips and tricks I wish I’d known before my first “DubDub”, and I hope it will be helpful for you.
So, sit back, get a cup of coffee, make yourself comfortable and then get back over here. I’ll be waiting.
If you are in the Twitter circles of young iOS developers, you’ve probably seen at least a few videos of scholarship apps created by students that are applying for this year’s WWDC scholarship. So I thought it would be a good idea to show off my app too. I’ve tried to make it short and sweet, instead of big app with a lot of effects and tons of texts, as I don’t expect Apple reviewers to spend too much time with each individual app. But when I saw some of the others, maybe I made it too simple. Anyways, here it is:
(I am sorry for the shaking, I should probably get a tripod for the next time :P)
As you can see, there is a simple intro implemented using UIKit Dynamics with different elasticity for each letter, and then a parallax timeline with my history. What you probably didn’t notice – there is also a little effect that distorts the texts during scrolling and make the texts sharp when it stops. That’s done using an attachment behaviour, changing the anchor point in viewDidScroll, and observing center point of the attached view, where I calculate distance between the centre point and the scrollView offset, and set the textView’s shadowOffset and shadowRadius based on the difference.
If you are interested in what others did, you can take a look at this GitHub page. And if you applied for the scholarship yourself, make sure to submit yours there.
All applicants will be notified of their status by April 28, that means 10 days from now. I was lucky enough to get in last year, so fingers crossed for all the hard-working newcomers!
We are always looking for new ways to make the Routie experience better, easier and even more delightful. We are also huge fans of the promising and fast-evolving category of wearable devices. That’s why we decided to build an app for watches, that will enable you to control tracking and view metrics on your wrist, without pulling-out your phone.
Since we love Pebble, a company that has been pioneering smart watches category since 2012 when they succeeded with their Kickstarter campaign, we decided to build the watch app for Pebble. We’ve been hard at work for the last couple of weeks, and we believe that you’ll love what we came up with!
What can I do with Routie for Pebble?
In a nutshell, you can:
- start / stop tracking
- view two metrics at a time:
- duration, current speed or average speed in the top position
- distance, current altitude or max speed in the bottom position
In case you are new to Pebble, it works like that: the app running on iPhone is repeatedly sending metric updates (current speed, altitude, distance etc.) to the watch via Bluetooth. The watch sends the start or stop event to the Routie iPhone app whenever you click the middle button. Other synchronisation is also performed using Bluetooth.
Here is an image that explains which buttons do what:
Where can I get it?
Routie is available on iOS App Store and Pebble App Store. The iOS version currently costs only $2.99. Download it, take it for a run/bike trip/walk and enjoy. We’d love to hear your thoughts!
Spread the love
We’ve created a small landing page for the Routie – Pebble combo. You can check it out here: routieapp.com/pebble.html and you can also share it with your Pebble friends from there using the Like / Tweet buttons.
I would like thank my friend Patrick Balestra for his suggestion to give Pebble a try, and for being kind enough to help me out with developing the watch app! This wouldn’t be possible without him. He is a nice guy; you should follow him on Twitter.
I’d also like to thank my good friend Martin Malinda for giving me a helping hand with coding the Routie for Pebble website.
Last but not least, I would like to thank all the testers from Pebble forums that tried it out, and especially those who provided valuable suggestions: Jamie Bishop, Derrick Gould and Mark Stroeve, among others.
Your help is much appreciated!
I am excited to announce that the new 2.4 update that I’ve been working on for quite some time was finally released! As the title says, the most important feature of this update is a brand-new Statistics tab. Let me explain what’s it about.
Up until now, the only thing you could do with your tracked routes as a whole was to view a long list of them, with one cell for each track. And it was working well; you could see all the details you needed for each of these tracks, separately. But you couldn’t see any totals, and that’s what the Statistics tab is all about – it provides activity-specific and time frame-specific summaries.
I had been thinking a lot about how to make this feature as easy to use as possible, while adding a playful element to it and making it useful for the most common use cases. I broke it down to this basic functionality:
How it works
1) choose between 3 timeframes:
- all time
- last year
- last month
2) choose activity for which you want to see the summaries
- all activities, cycling, running etc.
- ordered by track counts
3) view 3 totals:
- total tracks count
- total distance tracked
- total duration tracked
Now, this might sound like a lot of functionality that ultimately has to result in a complicated user interface, right? Usually it does, but I believe that I have found a way that makes all this very easy to do. And here it is:
Just swipe left or right to switch between activities using a nice parallax effect, and use the segmented control at the top to select a time frame. That’s basically it. Oh, and if you like to boast about your sport accomplishments, you can share a screenshot of this view right from the app, using the top-right action button.
If you are new to Routie and are curious to know more, you can take a look at its website. To see complete list of what’s new, take a look at the App Store.
In today’s programming tutorial, I’ll show you how easy it is to use OpenStreetMap maps in your app instead of default Apple maps. There are many reasons why you might want to do this: for example, the OpenStreetMap project is being built by a huge community of contributors and therefore the maps are really detailed; or, you might just want to give your users the option to use whatever maps they prefer.
Prior to iOS 7, it was also possible to use different map tiles than those that MapKit provides, but it required fairly large amount of code and work. Luckily, the map kit team introduced a really simple way to do this in iOS 7: new classes MKTileOverlay and MKTileOverlayRenderer. If you are a registered iOS developer, I highly suggest you watch the session 304 of WWDC ’13 here (requires ADC login). The introduction of it starts at 22:09.
You probably came here to see the code, so I’ll skip the explanation for now.
And… here it is!
Today, the 2.3 version of Routie ~ sports tracker was approved by Apple and you can download it from the App Store.
Export to file
The main feature this update includes is that you can get file exports of your tracks, right in the app. While it had been possible to get those exports from the website of your shared or uploaded route ever since version 1.0, some users found it too inconvenient, or didn’t know about it at all, so I decided to go the extra mile and build it right into the app itself. Now you can select your desired export type (GPX, KML, or KMZ) and perform an action (Open in another app, Send via Email, or Copy to iTunes File Sharing) with just 2 taps. In case you don’t know what the exports are good for, one interesting thing you can do with them is to open them in Google Earth right on your device, and view it in the 3D landscape.
Revamped sharing screen
The sharing screen was also somewhat fussy to understand prior to this version. Now, you have explanation of what exactly it means to Upload or Share your track, and what happens when you choose to do it. Also, you can now get the link of the track more easily, since it is displayed in a separate status cell.
Example of a cycling track exported in kml and opened in Google Earth for iOS
This version also includes some minor improvements and bug fixes, most notably resolving the issue that might have caused Twitter sharing not to work for some users. I am confident that you’ll like it, so please, update and let me know what you think!
It’s been a while since my last post (again); so I am glad to break this ‘silence’. And I believe some of you will be glad as well, because, as the title suggests, I’ve decided to change the price of Routie to FREE for one week (starting now). So if you wasn’t sure if Routie was a good fit for you, or you would like to just see what I’ve been working on, now is a great opportunity!
You can give it a try when you go skiing, running or just for a walk, it’s universal for all outdoor sports.
Now, what are you waiting for? Head over to the App Store and download it for free here! Or learn more at routieapp.com.
Routie is now fully optimised for iOS 7 and the update is awaiting Apple’s approval. I really wanted to finish it sooner, but there were some unexpected technical difficulties and everything took a little bit longer than I expected (as usually). Most of the stuff inside Routie was re-imagined for iOS 7 – it’s using 1-pixel lines inside most of the icons, all the graphics are flat and it heavily uses blur and translucency. Hopefully Apple will approve the update soon, so you can get it and see for yourself. Here are two screenshots to wet your appetite:
You can find out more about Routie ~ sports tracker here: routieapp.com, and download it on the App Store here.
I am currently redesigning Routie for iOS 7, and I wanted to display big numbers using the same font as in iOS 7 weather app and lock screen. I was quite surprised that with a quick search on Google, I wasn’t able to find the actual name of the font anywhere. So I went ahead and watched the ‘Using fonts with Text Kit’ WWDC session, and as expected, I found the answer there (not explicitly, but it pointed me to the right direction). So the font name is.. HelveticaNeue-Thin!