SlideShare a Scribd company logo
1 of 46
Download to read offline
TL; DR: iOS 9
What you should probably know
by now
Kevin Donnelly, @donnellyk
The TL; DR of TL; DR: iOS 9
You get a lot of stuff for free. Not much has broken.
TL; DR: iOS 9
1. Boring Stuff
2. Fun Stuff
3. Future Stuff
Boring Stuff
That you should definitely check
App Transport
Security
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
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...
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
Disabling ATS per Domain
Disabling ATS Everywhere
The ( °□° Approach
Disabling ATS Everywhere
Except not really everywhere
ATS and Charles (Proxy/Fiddler/
etc)
Edits the build's Info.plist to add ATS Exceptions at build-time
• Add a Run Script build step3
# Add exception for Debug builds
if [ "${CONFIGURATION}" == "Debug" ]
then
# Remove existing exceptions
/usr/libexec/PlistBuddy -c
"Delete :NSAppTransportSecurity:NSExceptionDomains:example.com"
"${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}" 2>/dev/null
exitCode=$? #Supresses failure
/usr/libexec/PlistBuddy -c
"Add :NSAppTransportSecurity:NSExceptionDomains:example.com dict"
"${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c
"Add :NSAppTransportSecurity:NSExceptionDomains:example.com:NSIncludesSubdomains bool true"
"${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c
"Add :NSAppTransportSecurity:NSExceptionDomains:example.com:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true"
"${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}"
fi
3
http://product.reverb.com/2015/06/29/ios-9-and-charles-proxy/
canOpenURL
Brought to you by Twitter's Biz Dev department
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>
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
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?
Not suppose to change the behavior of openURL:
Fun Stuff
That you can probably do now
Universal Links
Universal Links
Host a JSON file at example.com/apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
},
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
Universal Links
Universal Links
func application(application: UIApplication,
continueUserActivity userActivity:
NSUserActivity,
restorationHandler: ([AnyObject]?) -> Void)
-> Bool
Search
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)
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
Search
Core Spotlight
• Based on CRUDing CSSearchableItems
• Item described using 'CSSearchableItemAttributeSet'
• .indexSearchableItems on
CSSearchableIndex.defaultSearchableIndex()
Search
Core Spotlight
#import <CoreSpotlight/CSSearchableItemAttributeSet_General.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Documents.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Events.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Messaging.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Media.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Images.h>
#import <CoreSpotlight/CSSearchableItemAttributeSet_Places.h>
Search
NSUserActivity
Like Handoffs, sprinkle breadcrumbs throughtout the app
let userActivity = NSUserActivity(activityType: "com.example.thing")
userActivity.title = "Thing"
userActivity.keywords = ["things", "bits", "bops"]
userActivity.eligibleForSearch = true
userActivity.eligibleForPublicIndexing = false
userActivity.becomeCurrent()
Search
NSUserActivity
Assign CSSearchableItemAttributeSet
to .contentAttributeSet for richer results
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
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">
iPad Multitasking
• Build against iOS 9 SDK
• Support all orientations on iPad
• Use Launch Storyboard
iPad Multitasking
If your use of Auto Layout is relatively sane, It Just Works™
Adaptive Layout will certainly make it better, but not required
iPad Multitasking
override func viewWillTransitionToSize(size, coordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
coordinator.animateAlongsideTransition({ (context) -> Void in
// Animate me!!!
}) { (context) -> Void in
// Completion
}
}
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
Cool Stuff
That you'll probably have to wait year(s) to use
UIStackViews
OMG, UIStackViews!
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
Review
• App Transport Security
• canOpenURL:
• Universal Links
• Search
• iPad Multitasking
• UIStackViews

More Related Content

What's hot

Building Twitter's SDKs for Android
Building Twitter's SDKs for AndroidBuilding Twitter's SDKs for Android
Building Twitter's SDKs for AndroidAndy Piper
 
How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)Noah Brier
 
Noah Brier: How to build web apps
Noah Brier: How to build web appsNoah Brier: How to build web apps
Noah Brier: How to build web appsPlanning-ness
 
Now That's What I Call WordPress Security 2010
Now That's What I Call WordPress Security 2010Now That's What I Call WordPress Security 2010
Now That's What I Call WordPress Security 2010Brad Williams
 
HTML5 Web Messaging
HTML5 Web MessagingHTML5 Web Messaging
HTML5 Web MessagingMike Taylor
 
Twitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayTwitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayAndy Piper
 
WordPress Security WordCamp OC 2013
WordPress Security WordCamp OC 2013WordPress Security WordCamp OC 2013
WordPress Security WordCamp OC 2013Brad Williams
 
Mobile Device APIs
Mobile Device APIsMobile Device APIs
Mobile Device APIsJames Pearce
 
WordPress Security Updated - NYC Meetup 2009
WordPress Security Updated - NYC Meetup 2009WordPress Security Updated - NYC Meetup 2009
WordPress Security Updated - NYC Meetup 2009Brad Williams
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac DawsonCODE BLUE
 
WordCamp Chicago 2011 - WordPress End User Security - Dre Armeda
WordCamp Chicago 2011 - WordPress End User Security - Dre ArmedaWordCamp Chicago 2011 - WordPress End User Security - Dre Armeda
WordCamp Chicago 2011 - WordPress End User Security - Dre ArmedaDre Armeda
 
Wordpress Security & Hardening Steps
Wordpress Security & Hardening StepsWordpress Security & Hardening Steps
Wordpress Security & Hardening StepsPlasterdog Web Design
 
Securing WordPress by Jeff Hoffman
Securing WordPress by Jeff HoffmanSecuring WordPress by Jeff Hoffman
Securing WordPress by Jeff HoffmanJeff Hoffman
 
WordPress End-User Security - WordCamp Las Vegas 2011
WordPress End-User Security - WordCamp Las Vegas 2011WordPress End-User Security - WordCamp Las Vegas 2011
WordPress End-User Security - WordCamp Las Vegas 2011Dre Armeda
 
Information Retrieval and Extraction
Information Retrieval and ExtractionInformation Retrieval and Extraction
Information Retrieval and ExtractionChristopher Frenz
 
Deploy and Publish Web Service
Deploy and Publish Web ServiceDeploy and Publish Web Service
Deploy and Publish Web Servicepradeepfdo
 

What's hot (20)

Building Twitter's SDKs for Android
Building Twitter's SDKs for AndroidBuilding Twitter's SDKs for Android
Building Twitter's SDKs for Android
 
How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)
 
Noah Brier: How to build web apps
Noah Brier: How to build web appsNoah Brier: How to build web apps
Noah Brier: How to build web apps
 
Now That's What I Call WordPress Security 2010
Now That's What I Call WordPress Security 2010Now That's What I Call WordPress Security 2010
Now That's What I Call WordPress Security 2010
 
HTML5 Web Messaging
HTML5 Web MessagingHTML5 Web Messaging
HTML5 Web Messaging
 
Twitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayTwitter APIs for #MediaHackday
Twitter APIs for #MediaHackday
 
WordPress Security WordCamp OC 2013
WordPress Security WordCamp OC 2013WordPress Security WordCamp OC 2013
WordPress Security WordCamp OC 2013
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Mobile Device APIs
Mobile Device APIsMobile Device APIs
Mobile Device APIs
 
WordPress Security Updated - NYC Meetup 2009
WordPress Security Updated - NYC Meetup 2009WordPress Security Updated - NYC Meetup 2009
WordPress Security Updated - NYC Meetup 2009
 
Dr.Repi
Dr.Repi Dr.Repi
Dr.Repi
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
 
WordCamp Chicago 2011 - WordPress End User Security - Dre Armeda
WordCamp Chicago 2011 - WordPress End User Security - Dre ArmedaWordCamp Chicago 2011 - WordPress End User Security - Dre Armeda
WordCamp Chicago 2011 - WordPress End User Security - Dre Armeda
 
Wordpress Security & Hardening Steps
Wordpress Security & Hardening StepsWordpress Security & Hardening Steps
Wordpress Security & Hardening Steps
 
Securing WordPress by Jeff Hoffman
Securing WordPress by Jeff HoffmanSecuring WordPress by Jeff Hoffman
Securing WordPress by Jeff Hoffman
 
Mixpanel
MixpanelMixpanel
Mixpanel
 
WordPress End-User Security - WordCamp Las Vegas 2011
WordPress End-User Security - WordCamp Las Vegas 2011WordPress End-User Security - WordCamp Las Vegas 2011
WordPress End-User Security - WordCamp Las Vegas 2011
 
Information Retrieval and Extraction
Information Retrieval and ExtractionInformation Retrieval and Extraction
Information Retrieval and Extraction
 
Index chrome
Index chromeIndex chrome
Index chrome
 
Deploy and Publish Web Service
Deploy and Publish Web ServiceDeploy and Publish Web Service
Deploy and Publish Web Service
 

Similar to TL; DR: iOS 9R

Mozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSMozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSRobert Nyman
 
AI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedAI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedMarvin Heng
 
REST with Eve and Python
REST with Eve and PythonREST with Eve and Python
REST with Eve and PythonPiXeL16
 
AppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App PerformanceAppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App Performancerobgalvinjr
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsNathan Smith
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Francois Marier
 
RoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails exampleRoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails exampleRailwaymen
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Microsoft
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVCAlive Kuo
 
maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingMax Kleiner
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesBrad Hill
 
Windows Azure: Connecting the Dots for a Mobile Workforce
Windows Azure: Connecting the Dots for a Mobile WorkforceWindows Azure: Connecting the Dots for a Mobile Workforce
Windows Azure: Connecting the Dots for a Mobile WorkforceTechWell
 
Website Security
Website SecurityWebsite Security
Website SecurityCarlos Z
 
Website Security
Website SecurityWebsite Security
Website SecurityMODxpo
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMichael Dawson
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearchprotofy
 

Similar to TL; DR: iOS 9R (20)

Mozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSMozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJS
 
AI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedAI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You Typed
 
REST with Eve and Python
REST with Eve and PythonREST with Eve and Python
REST with Eve and Python
 
AppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App PerformanceAppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App Performance
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)
 
RoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails exampleRoR Workshop - Web applications hacking - Ruby on Rails example
RoR Workshop - Web applications hacking - Ruby on Rails example
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage coding
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
 
Windows Azure: Connecting the Dots for a Mobile Workforce
Windows Azure: Connecting the Dots for a Mobile WorkforceWindows Azure: Connecting the Dots for a Mobile Workforce
Windows Azure: Connecting the Dots for a Mobile Workforce
 
Rails and security
Rails and securityRails and security
Rails and security
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 
Website Security
Website SecurityWebsite Security
Website Security
 
Website Security
Website SecurityWebsite Security
Website Security
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
 
Micro app-framework
Micro app-frameworkMicro app-framework
Micro app-framework
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
 

Recently uploaded

IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLDeelipZope
 
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...VICTOR MAESTRE RAMIREZ
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
power system scada applications and uses
power system scada applications and usespower system scada applications and uses
power system scada applications and usesDevarapalliHaritha
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacingjaychoudhary37
 

Recently uploaded (20)

9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCL
 
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...
VICTOR MAESTRE RAMIREZ - Planetary Defender on NASA's Double Asteroid Redirec...
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
power system scada applications and uses
power system scada applications and usespower system scada applications and uses
power system scada applications and uses
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacing
 

TL; DR: iOS 9R

  • 1. TL; DR: iOS 9 What you should probably know by now Kevin Donnelly, @donnellyk
  • 2. The TL; DR of TL; DR: iOS 9 You get a lot of stuff for free. Not much has broken.
  • 3. TL; DR: iOS 9 1. Boring Stuff 2. Fun Stuff 3. Future Stuff
  • 4. Boring Stuff That you should definitely check
  • 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
  • 9.
  • 11. Disabling ATS Everywhere The ( °□° Approach
  • 12. Disabling ATS Everywhere Except not really everywhere
  • 13. ATS and Charles (Proxy/Fiddler/ etc) Edits the build's Info.plist to add ATS Exceptions at build-time • Add a Run Script build step3 # Add exception for Debug builds if [ "${CONFIGURATION}" == "Debug" ] then # Remove existing exceptions /usr/libexec/PlistBuddy -c "Delete :NSAppTransportSecurity:NSExceptionDomains:example.com" "${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}" 2>/dev/null exitCode=$? #Supresses failure /usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:example.com dict" "${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}" /usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:example.com:NSIncludesSubdomains bool true" "${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}" /usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:example.com:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" "${CONFIGURATION_BUILD_DIR}/${INFOPLIST_PATH}" fi 3 http://product.reverb.com/2015/06/29/ios-9-and-charles-proxy/
  • 14. canOpenURL Brought to you by Twitter's Biz Dev department
  • 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?
  • 18. Not suppose to change the behavior of openURL:
  • 19. Fun Stuff That you can probably do now
  • 21. Universal Links Host a JSON file at example.com/apple-app-site-association { "applinks": { "apps": [], "details": [ { "appID": "9JA89QQLNQ.com.apple.wwdc", "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ] }, { "appID": "TeamID.BundleID2", "paths": [ "*" ] } ] } }
  • 23. Universal Links func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool
  • 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()
  • 28. Search Core Spotlight #import <CoreSpotlight/CSSearchableItemAttributeSet_General.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Documents.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Events.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Messaging.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Media.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Images.h> #import <CoreSpotlight/CSSearchableItemAttributeSet_Places.h>
  • 29. Search NSUserActivity Like Handoffs, sprinkle breadcrumbs throughtout the app let userActivity = NSUserActivity(activityType: "com.example.thing") userActivity.title = "Thing" userActivity.keywords = ["things", "bits", "bops"] userActivity.eligibleForSearch = true userActivity.eligibleForPublicIndexing = false userActivity.becomeCurrent()
  • 30.
  • 32.
  • 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
  • 37. iPad Multitasking override func viewWillTransitionToSize(size, coordinator) { super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) coordinator.animateAlongsideTransition({ (context) -> Void in // Animate me!!! }) { (context) -> Void in // Completion } }
  • 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
  • 39. Cool Stuff That you'll probably have to wait year(s) to use
  • 42.
  • 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
  • 44.
  • 45.
  • 46. Review • App Transport Security • canOpenURL: • Universal Links • Search • iPad Multitasking • UIStackViews