6. App Transport Security
In an ideal world, It Just Works™ if
- TSL v1.2
- Certicates signed with SHA256 or better
- RSA 2048/ ECC 256 or better keys)
- Uses Forward Secrecy
7. An SSL error has occurred and a secure connection to
the server cannot be made.
NSUnderlyingError=0x7f88f9436eb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200
"An SSL error has occurred and a secure connection to the server cannot be made."
UserInfo={NSErrorFailingURLStringKey= https://graph.facebook.com/v2.4,
NSLocalizedRecoverySuggestion= Would you like to connect to the server anyway?,
_kCFNetworkCFStreamSSLErrorOriginalValue=-9802,
kCFStreamPropertySSLPeerCertificates=<CFArray 0x7f88f9536e00...
8. App Transport Security
Audit your app, see where things break1
Keep in mind 3rd-party hosting/APIs/SDKs. All network
connectivity uses these rules2
2
https://developers.facebook.com/docs/ios/ios9
1
https://globalsign.ssllabs.com
15. canOpenURL
For apps built against iOS 9
You now build a whitelist of URLS you want to be able to call in
Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
</array>
16. canOpenURL
For apps built against iOS 9
Calling canOpenURL: for any URL:
- on the whilelist will return YES/NO as normal
- NOT on the whitelist will ALWAYS return NO
17. canOpenURL
For apps built against previous iOS version
• You can call canOpenURL:, as normal, for 50 unique URLS
• On the 51st, it will always return NO.
This does not reset*
*
So they say, app reinstall maybe?
25. Search
Three distinct systems:
• CoreSpotlight
• NSUserActivity
• Web Markup
NSUserActivity and Core Spotlight is not supported on iPhone 4s, iPad 2, iPad (3rd
generation), iPad mini, and iPod touch (5th generation)
26. Search
Core Spotlight
• Good for when the app has no backend or holds the entire
data set
• Notes, To Do list, Photo library
• Not equivalent to OS X's Spotlight APIs
27. Search
Core Spotlight
• Based on CRUDing CSSearchableItems
• Item described using 'CSSearchableItemAttributeSet'
• .indexSearchableItems on
CSSearchableIndex.defaultSearchableIndex()
33. Search
Web Markup
• Applebot crawler starts with URL provided in app store
listing
• Markup site using Scheme.org or Open Graph4
• Validate using Apple's tools5
5
https://search.developer.apple.com/appsearch-validation-tool/
4
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/WebContent.html
34. Search
Web Markup
<title>Beats by Dr. Dre...</title>
<meta property="og:description" content="Beats...">
<span itemprop="reviewCount">924</span>
<meta itemprop="ratingValue" content="4.5">
<meta itemprop="priceCurrency" content="USD">
35. iPad Multitasking
• Build against iOS 9 SDK
• Support all orientations on iPad
• Use Launch Storyboard
36. iPad Multitasking
If your use of Auto Layout is relatively sane, It Just Works™
Adaptive Layout will certainly make it better, but not required
38. iPad Multitasking
• UIWindow.bounds not UIScreen.bounds
• Memory will be a tighter, so keep it in mind.
• To completely opt out, add UIRequiresFullscreen:YES to
Info.plist
43. UIStackViews
• Handles all the constraints between your views
• Including removing when view.hidden = YES
• Everything is animatable
• Smug Android developers can no longer hold LinearLayout
over us