Now that the initial fallout, from the WWDC15 conference on Monday night, has settled and the initial talking points across the office have been made it seems like the right time to dig deeper into the juicy bits. There were quite a few new improvements that were directly aimed at us Mac/iOS/Watch developers that deserve to be mentioned and analyzed.
OS X: 'El Capitan'
I won’t spend a lot of time discussing the new Mac OS offering from Apple, as Mac Apps aren’t something we find ourselves producing regularly, however, the initial look at the OS shows many nice new features including:
- Split Screen functionality for working with multiple windows at once
- Better window management from Mission Control
- More comprehensive search from Spotlight including content from Apps + Websites.
- Moving the core processing operations on top of the new Apple ‘Metal’ processing layer (previously only on iOS), resulting in a generally faster user experience across the whole OS.
All of these will provide a nicer day-to-day experience, for us in the office that use OS X, and also mean that, should we need to delve into the world of developing Mac Apps then we have some powerful tools at our disposal.
Apple’s new mobile operating system is once again introducing a host of functional updates as well new functionality altogether, all of which look exciting to get stuck into developing and supporting for in upcoming products. However their announcement of the devices being supported by the new OS being the same as the previous one might/in my case definitely, be a negative for anyone wanting to drop support for the smaller iPhone 4S (which still proves to be a pain to support at times).
This is something that I can see becoming very popular with our clients. Users can now search for content within apps and websites via the ‘Search’ functionality on their mobile devices. We can also, within our code, provide specific search ‘tags’ to appear in the search results, which will contain links to specific parts of the app – thus allowing for quick return access to our customers’ products. It also looks like it won’t take much coding to implement this deep linking as well, which will make it appealing for us to offer. On top of manually searching for app content Apple are also making it easier and better to conduct searches using Siri, meaning that getting back to a customer’s app will be effortless and should help drive engagement and retention.
Apple Pay is getting the major rollout here in the UK! A whole host of banks and retailers will be adopting the new, contactless payment method, which could push its adoption rate skyward. This could also mean that more customers start asking for more ‘in-app-purchases’ due to the slicker and safer authentication (soon to be full 2-step-authentication) that the new Apple Pay/Wallet functionality offers. However that % cut of any takings is always going to be the biggest turn-off for that approach.
The iPad version of iOS got some nice, new updates as part of iOS 9, which I seriously think we’ll have a lot of requests for from customers in the near future. These include:
- Split screen viewing of apps, including dynamic resizing of apps.
- Slide-over view (a shortened preview of an app that is accessible by swiping in from the right hand side).
- Minimized video streaming. Basically meaning an app with a video playback feature can be minimized to a smaller window that can sit anywhere on the screen as well staying on top of any apps that are running at the same time. This means that continuing to view the video whilst, for example, checking your emails would be seamless. As more customers start integrating video playback into their apps, due to the improvements in processing power available in newer mobile models, this will be a great asset to have.
Again Apple has made it very easy to start planning for and implementing this new functionality by building it around their impressive ‘Auto-Layout’ framework for iOS. This means that any apps we design (or have already designed) using Auto-Layout should be already compatible with this new layout functionality and should we wish to introduce any custom behavior then all the APIs are available for us to do so. This should lead to us being able to create some really specific and wonderful iPad experiences for our users, which I wouldn’t be surprised if it started a resurgence of iPad specific apps being asked for again.
With every app that we make we have to make serious considerations towards the performance capabilities of the functionality we’re going to implement as well any impact that it will have towards the device’s battery life.
Apple have announced that in iOS 9 that general UI drawing processing will be cut in half, which should resulting in a much slicker experience when using graphic intensive apps as well as giving developers more opportunity to produce better/more immersive graphical interfaces for their products.
As well as performance upgrades, they’ve claimed to increase the general battery life of their mobile range by 1 hour and will have a ‘Low Power Mode’ option available, which will offer a further 3 hours battery life on top of that. If this all holds true then I have to say that’s a job well done in my books.
We saw quite a few updates soon to be released as part of watchOS2, most of which developers have been crying out for since the initial release of the watchKit earlier in the year. These include:
- Full access to the watch’s speaker/microphone/accelerometers/Digital Crown & Watch side button/taptic engine
- Ability to integrate data to/from Apple’s HealthKit app as well full HomeKit support
- Video Playback on the watch itself
A big thing to help support all this new functionality is the introduction of fully native Watch Apps. This will result in a much better Watch experience through more immersive information being available as well as a much faster performance (which has been a major issue with a lot of users using the 1st generation apps that have been released already). On top of this the Watch can also now access Wi-Fi networks directly allowing for direct information updates, without having to relay to the iPhone all the time, which will immensely improve any apps that rely on regular data updates.
The introduction of the new API to create your own ‘Complications’ (a new watch face with even more detail available on it – that will also be, freely, compatible with the new ‘Time Travel’ functionality) will also be a big attraction I think for customers who want custom Watch apps to go alongside the standard iOS requirements. Any way for users to accurately and effectively view information from their products is going to be massive.
Obviously none of this is possible without the use of Xcode and Apple’s programming languages, Objective-C & Swift, all of which are seeing updates.
Our IDE is seeing the introduction of full UI testing capabilities built right in, which is a much welcome addition to producing fully stable applications as early in the development process as possible. With the ever growing number of devices within the iOS eco-system (and with new layout functionality such as the new iPad split screen feature) it becomes more and more important to have good tools to conduct efficient and effective developer testing – before handing over to our dedicated test team to really focus in on functional testing.
Swift / Objective-C
It is really great to see some genuinely useful, and much asked for, updates to both languages (especially as we’re still predominantly using Objective-C with an eye towards integrating more Swift as time goes on).
Some of the Swift updates include:
- Error Handling – This will aid in general debugging and ‘silent failing’ of operations within Swift code, which will make operations much more stable and should make Swift code much less of a liability in hybrid projects.
- Protocol Extensions – This has been shouted about for a while so I’m glad to see it finally being introduced. When using grouped sets of data it’s nice to everything conform to the same set of ‘rules’ (from a protocol) and with the ability to extend it out to maintain that adoption with custom rules as well will add a lot of flexibility in our Swift code.
- More in Depth Testability – This will allow for a full range of Swift 2.0 tests to be written, which will be able to drill down right into all public and internal routines throughout any Swift code. More testing equals more stable apps.
The Objective-C updates include:
- Generics – (This actually wasn’t mentioned in the Keynote but is instead taken from the Xcode7 release notes!) This is to allow us to specific type information for collection-based code (for example Arrays and Dictionaries). This will allow for better performance within the code, as the compiler can optimize the ‘group set’ based on the class type information specified as well also aiding in readability/maintainability of code written. This is quite a common feature in other languages so is probably way overdue for Objective-C so I would expect it to appear in everyone’s code sooner rather than later. (However how/why it was left out of the keynote itself I’ll never know.)
Other topics that might prove to be of interest include the ‘App Thinning’, which involves the App Store only downloading specific content for each type of device meaning that potentially less data is required to be download, quicker download times and less storage required. All of which is beneficial to the user.
Are you excited about developing for the new OS’s and which features look most appealing to you? Tweet us at @Degree53 to let us know.
You may also be interested in our Overview of the New iOS 9 APIs and Tools for Developers.