A lightning talk I gave on VoxxedDays Belgrade 2016 conference, On Sep 29th, 2016
Here's the extended content of the talk.
VoxxedDays Belgrade 2016
# Fresh Cup of iOS 10
This is pretty open-ended title for a talk, eh? Love this title.
Given that iOS enters its second decade, it’s a perfect opportunity to reflect on State of Things: what’s possible to do, how the market looks like today and to shed some light on the most important question for any developer: what I should focus on? There are 10s of 1000s of APIs, dozens and dozens of frameworks; if you are fairly new to this platform you can *very* quickly be overwhelmed.
A bit of reminiscence first…
10th incarnation of an OS should mean very, very mature and complete OS. All the little bugs and issues would be done, edges cases resolved, right?
*Not really.* iOS is actually in the early years of its rebirth, which started with **iOS 7.** Apple has completely changed not only the visual look but also a good deal of the technical underpinnings of their iOS. They changed the very basics, something you do even in the simplest of apps.
They changed their internal view structure in the container controllers like UINavigationController or UITabBarController in a way that essentially broke them, from end-user’s point of view. On the very first compile of your previously working code you would’ve seen that app’s content was now partially hidden below the navigation and tab bars. From end customer’s point of view – that’s broken app.
At the same time, they introduced two new form factors for the iPhone, with iPhone 6 and 6 Plus. Those two gave _us_ - developers & designers - two new screen resolutions to deal with. Resolution which were changed not only vertically but also horizontally as well.
Which meant another possible degree of brokenness – your app would end up being distorted with display zoom from 320✕568 to 375 ✕ _something_ or 414 ✕ _something_, until you recompile with new SDK. I deliberately say _something_ because I honestly can’t remember what’s the actual screen height on those iPhones. That was the year where thinking in terms of precise pixels ended and the era of Auto Layout started.
Additionally - on 6 Plus all your fancy graphical assets ended up blurred, since that iPhone requires new image asset category, `@3x`.
So for developers, that meant a year was spent adjusting to new reality. And I include Apple developers into that mix as well, as their new APIs were _faaaaar_ from bug-free.
For designers it was even worse as the rules of engagement drastically changed overnight. // Vader //
In **iOS 8**, Apple showed that it has no intention to stop nor slow-down. If anything, they doubled the pace. iOS 8 was the OS that brought us an amazing array of transition and animation APIs and some of those still give me headache two years later. Headache, because too many degrees of freedom is often too much to handle but also limitless in its potential.
The transition APIs are awesome because they were designed not as classes but as *protocols*. Protocols are descriptions of behaviors you want to implement and they receive the final form only when you attached them to a particular views or other objects.
Something else was delivered to the world along with iOS 8.
A mighty little bird called **Swift**. And as ensuing years would reveal, Swift was being built as *protocol-oriented and value-types* language from the ground up.
If you take a look at the Swift Standard Library, you will see it has a dozen of so structs and classes and over 60 protocols.
(Makes you think: Apple must be really lucky that their teams working on different stuff were heading into the same general direction. Riiiight? :)
iOS always had a very reach set of system frameworks that allowed you to use the available hardware to the max: Core Location, Core Bluetooth, Core Motion, Audio and Video and Camera access etc.
iOS 8, 9 and 10 added lots of new System and App Frameworks: HealthKit, HomeKit, ResearchKit, CareKit, SiriKit, CallKit etc. CloudKit turned out to finally be usable cloud offering from Apple after multiple mis-steps. They continued to evolve and develop AVFoundation for dealing with media and added PhotoKit to deal with Photos; added SpriteKit for 2D games and SceneKit for 3D games.
Added…you get the picture.
There is so much in there, so much to learn. Starting as iOS developer today is a serious undertaking and the mountain you’re looking up is *huuuuuuge*.
## Focus Point: Language
So…what you should focus on?
First of all, the language to use: Objective-C or Swift?
*Swift is clearly the future.* The brand new Swift 3.0 marks the last of the big waves of syntax changes and severe source code compatibility brakes. Swift is very much loved in and outside of Apple dev community. All new and future Apple frameworks are designed with Swift in mind even if they are not (yet) written *in* Swift.
At WWDC 2014 when Swift was introduced, we witnessed the bravest Apple developers changing their presentation slides day or even less than a day before they were scheduled to present, just so they can have sample code in Swift and not Objective-C. I remember one of them spotting a syntax error in his slides and commenting “one should really not write code without a compiler’s help half an hour before presenting his talk”. Regardless, the excitement for the language was very palpable.
At WWDC 2015, ratio of Swift vs Obj-C samples was already in Swift’s favor but only by a little.
This year? 99% Swift. The only Obj-C code I have seen in the presentations was in the debug and troubleshooting sessions. If you are *starting a new app today* or in upcoming weeks, you’ll be very sorry in a year if you don’t use Swift 3 for that app. Even if today you don’t know Swift, start your next app with it and learn along the way.
Swift has fantastic learning tools, maybe the best of any other language out there. Even if you don’t own a Mac you can still learn and program real Swift code, not some dumb down meta language. You need an iPad though, that can run iOS 10 and Swift Playgrounds app which is free on the App Store.
You can’t write apps in the Playgrounds but you can access every single framework on the iOS directly and you can do anything you would do in an actual app.
## Focus Point: Features
With so much frameworks to choose, what should you do..? Develop a great new productivity tool? Business solution? Next amazing audio or video app?
You draw **stickers**.
The front page of the App Store says it all. Don’t kid yourself thinking this is temporary fad - *stickers are amazingly profitable*, especially in Asia. People will think 3x before buying an excellent notes app for a buck but will buy 50-odd-sticker pack for double or triple that without a thought spent.
*Stickers are here to stay.* If you have a friend or two that are good illustrators and/or graphic wizards, ask them out for drink or two. There’s Halloween coming up at the end of October; there’s Christmas and New Year, Valentine’s Day and various spring festivals like St Patrick’s Day where I expect the App Store to be covered in clovers. Etc.
Sticker apps are amazingly easy to package and distribute and more than anything else - you need a good idea and fantastic execution to succeed.
Just prepare yourself that it’s equally easy to be ripped off. It’s one of the sad realities of the App Store; app review won’t help you much there. DMCA complaints might, but I wouldn’t put much hope. The recipe is the same with app/games copycats: be awesome when marketing your creations and outpace the copycats.
### Major Features Showcase
Each time new iOS is out, App Store highlights the apps that best showcase the new OS features. So let’s tap the huge “We love iOS 10 for apps.” banner and see what they emphasize this year.
* Stickers, of course
* MessageKit, double time
* Photo apps, because the camera is the headline feature of iPhone 7 and 7 Plus
* Apps with rich notifications because those changed pretty much in iOS 10
* MapKit is one of the new extension points in iOS 10, but it requires you to contact Apple and become a partner in order to integrate with Apple Maps
* 3D Touch is not a fad as some would say. It’s a great feature and one you should implement across the board in your app
So that’s the new shiny, primarily driven by Apple’s own marketing needs.
Here’s the bad news: *If you want to be featured here, chances are you are already late* as you should have been making your app targeting these features over the summer. June to September is when you slave under buggy and incomplete betas, buggy Xcode releases etc. If you survive and end up with something good, you stand a fairly good chance to be featured by Apple.
Thus an **advice for next year**: learn Swift 3, make one or two simple apps to get into the groove and clear your calendar for the summer. Watch the WWDC keynote, pay very close attention to what Apple highlights in iOS 11 and choose your battlefield.
### What else..?
Well, there’s new year coming up. Apple will be choosing Apps of the Year, will make multiple “New Year, New You” editorials and apps to feature. So making a great app is still worthwhile. But what makes a great app?
Your first stop should the *Editor’s Choice* – a collection of apps and games App Store editors featured in recent months.
Get those apps, use them and try to see what makes them great. Read descriptions that editors wrote about them. Find a review or two, on various blogs.
Watch Apple’s presentation where they emphasize how to make great apps – there are several at each WWDC. Watch their marketing talks where they give you great advice how to communicate with App Store editors directly.
An example of fantastic app that does well for years is “Day One”, a personal journal app. Apple has recently started adding this Editor Choice and similar badges to apps they featured, so it’s something to look out for.
*Don’t think too much about competition.* It’s vast. It’s mostly free. Depending on the field you are playing in, it’s probably better funded than you.
Well, so what.
Streaks app appeared several months ago as _yet-another-goal-tracking_ app, something that helps you adopt good, healthy habits. There are dozens and dozens of such apps on the App Store. But these guys did an amazing job, outdid all the competition and won an Apple Design Award this year
And speaking of Health & Fitness apps - don’t forget what else got refreshed few weeks ago. iPhone may be Apple’s brightest start but don’t neglect the Apple Watch.
With watchOS 3, it finally became a good, fairly fast and usable device. And by all accounts, Series 2 watches are pretty good and responsive.
I am personally betting on this and am updating [Run 5k](http://run5kiphoneapp.com) - my bread & butter app – to use all the features iPhone/Watch ecosystem offers.
Even better – I am working on a completely new app, built from ground-up in Swift 3, targeting iOS 10 and watchOS 3 *with* tvOS 10 thrown into the mix. Hopefully by end of year or in early Spring it will be on the App Store.
You can find the slides for this talk in the same place as all my talks at [Speaker Deck](https://speakerdeck.com/radianttap) and you can find my apps at [Radiant Tap](http://radianttap.com) and follow me up on Twitter as either @radiantav (in English) and/or @aleksandarvacic (in Serbian).
Thanks for listening!