Notes from WWDC 2014
Earlier this month I attended Apple’s World Wide Developer Conference (WWDC 2014) held in San Francisco. Despite Apple posting all sessions online, I still found the conference useful to attend.
First, because Apple also holds “Labs” during the conference. This provides the opportunity to meet Apple Engineers and ask them questions, including taking your code and having them review it.
Second, because I was able to talk, network, collaborate, discuss best practices and much more with the other attendees. I found this opportunity to talk with other fellow developers very rewarding. Hint: Best place to do this is at the dining hall during lunch.
Lastly, there are many networking events/parties each day after the conference. Many are worth attending. A “Parties” app is available specifically to view the schedule of events and RSVP. Note that these are not your usual parities. For example, at the Apple party, the guest band Bastille received far less attention than Apple’s VP of Software Craig Federighi. Bastille called the experience “surreal” =)
It’s always a good idea to take notes at these conferences, especially given the massive amount of change Apple announced. In fact, this year included more changes than ever before. I distributed the below notes internally at Originate, but thought it was a good idea to also toss it on our blog.
I have split up the notes into 3 sections - business, design, and development.
- Apple now provides access to the fingerprint scanner. While you don’t get the fingerprint, you do get access to the authentication API.
- You can now “bundle” your apps and sell at a discounted price.
- You can now create a video of your app and upload to the App Store.
- You can now provide a “Widget” for your app that a user can toss into the notification center.
- You can now provide an “Extension” for your app. This means other apps (including Safari!) can communicate with your app and run code from it. And even display UI from your app into other apps (This also means Apple has made it much easier to make libraries/frameworks which was never a straightforward process).
- Third party keyboards can now be created and installed on your iPhone (so yes you can get Swype typing now).
- TestFlight is now officially Apple. Looks like they will allow up to 1000 beta testers with no UUID needed. Enterprise accounts used for testing App Store apps no longer needed ;)
- Apple claims they will drastically improve analytics/data about your apps. All built in and viewed through iTunes Connect (which is being redesigned).
- The Apple location service will now also give your floor number (not just lat/lon).
- Apple has released a new programming language (Swift). It is suppose to perform much faster. It will also be much faster for development.
- Apple has made drastic improvements to debugging the UI in our apps. In addition, has provided many updates to allow an app to support multiple screen sizes more easily. They encourage us to now write code for iPad and iPhone at the same time. Lastly, the simulator can be resized!
- SceneKit was introduced. Similar to SpriteKit (what I used last year to do a talk on 2D games:http://blog.originate.com/blog/2013/09/05/apple-sprite-kit-demo), this one is for 3D games, used by the “Casual Game Developer” to quickly and easily make basic 3D games.
- CloudKit lets you build apps without a server. Similar to Parse.com. And it’s free for up to 1PB of assets and 10TB of data. Most interesting part is the app can set queries and flags on the data in the server. When an interested change occurs, the server will send a push notification to the app, allowing it to wake up and do whatever it needs in the background.
- HomeKit is a framework used to communicate with and control connected devices in a house. This is an effort by Apple to consolidate all connected devices.
- HealthKit is a framework used to allow health apps share data between themselves as well as with the new Apple Health App.
- Continuity lets you answer phone calls/texts on any Apple device, as well as seamlessly handoff email or web browsing seasons between Apple devices. A framework is also provided so that we can add this feature to our apps.
- Family Sharing lets family members share one credit card and one account to download apps and music. In addition parents now get notifications and are able to allow or reject requests from their kids to make purchases.
As mentioned, we now have the option to upload videos of our apps to the App Store.
Better asset management support for icons/images for each screen size built into Xcode. We can even add colors to the icons using this tool.
A few good talks on prototyping and design where given. Two things stuck in my head:
Custom transitions can be used to make UX more intuitive
APPLE strongly discourage using the Hamburger menu
The following talks should be viewed:
- Designing Intuitive User Experiences (this is the one that also mentioned the Hamburger icon)
- Prototyping: Fake It Till You Make It (this one showed a good example of transition and UX)
- Making a Great First Impression With Strong Onboarding Design
- Creating Great App Previews
- Building Interruptible and Responsive Interactions (this is a technical talk, but worth looking at to give you some ideas about UX)
Regarding Xcode 6, I recommended that each team at Originate should coordinate and prioritize with their PM and Tech Leads and plan to upgrade when appropriate.
Regarding Swift, similarly, I recommend to have the teams discuss and coordinate the transition. At the Swift talks Apple mentioned the language is still being developed and asked to get feedback. There are missing features. The biggest is that there is no way to make anything private (it will come soon). But regardless of when the teams start using Swift in their project, they need to start learning the language ASAP. This language will be much faster/better than Objective-C.
At Originate we often code everything, including the views. And sometimes avoid constraints, manually calculating and laying everything out. We have found this approach easy to follow and the code easier to manage. We may want to reevaluate now with the latest changes to Interface Builder. Regardless, whether or not we use the new Interface Builder, new size classes, new constraints, all iOS devs MUST learn the new features available to them. The decision on what to use can be left to the Tech lead on each project.
Regarding the talks, there are a few that I think are important to watch, and others that should be looked at when time. Generally all iOS devs should be aware these talks exist and of their subject matter. Then come back and view them when needed. Here is 2014 and 2013
- Platforms State of the Union
- What's New in Xcode 6
- What's New in Cocoa Touch
- What's New in Interface Builder
- What's New in Table and Collection Views
- Building Adaptive Apps with UIKit
- What's New in Table and Collection Views
- View Controller Advancements in iOS 8
- Advanced Scrollviews and Touch Handling Techniques (I really liked this one)
- Creating Custom iOS User Interfaces
- Introduction to Swift
- Intermediate Swift
- Advanced Swift
Should watch (Advanced):
- Core iOS Application Architectural Patterns
- Advanced iOS Application Architecture and Patterns (good subject, but I don’t think they did a great job presenting)
- Fix Bugs Faster using Activity Tracing (thread debugging)
- Introducing CloudKit
- Localizing with Xcode 6
- Building Interruptible and Responsive Interactions (Interesting talk about usability and animations/ux)
- Advanced User Interfaces with Collection Views
- Building Modern Frameworks (Not a very good talk, but should know about it)
If interested in creating a “casual game”:
- What's New in SceneKit
- Building a Game with SceneKit
- Introduction to Sprite Kit (2013)
- Designing Games with Sprite Kit (2013)
- What's New in SpriteKit
- Best Practices for Building SpriteKit Games
- Asynchronous testing support added to unit tests so you can test web server calls.
- Performance testing support added to unit tests. You can now set a threshold for your unit tests. If the test runs slower then the threshold, it will fail.
- Toolbar and Nav bar hiding animation is now built in (we don’t have to write from scratch).
- Now when you search, Interface Builder files are also searched.
- Views can be viewed in the debugger using a breakpoint.
- If using Interface Builder, the exact view is displayed now. Also you can test the view and run it without recompiling and running the entire app.
- You can examine your view in 3D and peel off layers in the front and back for debugging. You can also view constraints in this fashion.
- Interface builder lets you customize landscape/portrait for different size screens (Small/Medium/Large).
- Cells in table/collection views can size themselves.
- Size classes have been added, making it easy to create views for multiple screen sizes.
- Simulator can be resized!
- Popover and SplitViewController now work on iPhone (no longer a iPad control).
- Device rotation callbacks are all deprecated replaced with one call.
- Navigation push view controller pattern can be replaced with a better solution where the VC doesn’t need to have access to its navigation controller.
- Core location now tells you what floor you are on.
- Some notifications without user approval are now supported.
- Location based notifications are supported.
- SceneKit was introduced. Basically 3D version of SpriteKit.
- As mentioned, Continuity, HomeKit and HealthKit frameworks have been added (among many more).
- CloutKit lets you build apps without a server team (similar to Parse.com).
- It is now very easy to create frameworks.
- Read/write access to photos lib.
- Read what’s new in Xcode.
- Read the Swift programming language book.