SlideShare a Scribd company logo
1 of 109
Download to read offline
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
#WWDC14
User Privacy on iOS and OS X
Session 715
David Stites
Apple Product Security and Privacy
Core OS
!
Katie Skinner
Apple Product Security and Privacy
Agenda
Privacy and Reputation
Identifiers
Privacy Changes and Features
Prompting with Purpose
Data Isolation
Privacy Best Practices
Privacy and Reputation
Identifiers
Identifier APIs
Application Identifier
[NSUUID UUID]
Vendor Identifier
[[UIDevice currentDevice] identifierForVendor]
Advertising Identifier
[[UIDevice currentDevice] identifierForAdvertising]
Identifier APIs
Protecting Your User’s Privacy WWDC 2013
Identifier APIs
Scope Lifetime Backed Up
Restores
Across Devices
Application ID App Uninstall app Yes Yes
Vendor ID Developer
Uninstall 

developer’s apps
Yes No
Advertising ID Device “Reset Advertising ID” Yes No
Advertising Identifier
Be transparent about advertising practices
Do not cache the Advertising ID
• The ID can be changed via“Reset Advertising ID”button in 

Settings > Privacy > Advertising
Advertising Identifier will be different every time the API is called for TestFlight apps
Limit Ad Tracking
Limit Ad Tracking gives customers a choice in how advertising is served
[[ASIdentifierManager sharedManager] advertisingTrackingEnabled]
Required to check the value of this property before using Advertising Identifier
Can be controlled by restrictions
Advertising Identifier
Limit Ad Tracking
When the value of
advertisingTrackingEnabled is NO,
the advertising identifier is not permitted
to be used to collect data for or serve
targeted advertising
!
Advertising Identifier
When the value of
advertisingTrackingEnabled is NO,
the advertising identifier is only permitted
to be used for the purposes enumerated
in the iOS Program License Agreement
• Frequency capping
• Attribution
• Conversion events
• Estimating the number of unique users
• Fraud detection for advertising
• Debugging for advertising
Limit Ad Tracking
Advertising Identifier
In iTunes Connect, select how your app is using the Advertising Identifier
• Serve advertisements
• Attribute app installation with previously served advertisement
• Attribute an action taken to a previously served advertisement
!
!
iTunes Connect and Advertising Identifier
jappleseed
John Appleseed,
iTunes Connect and Advertising Identifier
jappleseed
John Appleseed,
John Appleseed,
Privacy Changes and Features
Family Sharing
There will be an increased number of accounts belonging to children
Consider implications for your app under relevant laws
• Example—COPPA (Children’s Online Privacy Protection Act) in the United States
!
Related Session
• Kids and Apps Nob Hill Thursday 3:15PM
MAC Address
In iOS 8, Wi-Fi scanning behavior has changed to use random, locally administrated
MAC addresses
• Probe requests (management frame sub-type 0x4)
• Probe responses (management frame sub-type 0x5)
The MAC address used for Wi-Fi scans may not always be the device’s real 

(universal) address
Safari Third Party Cookie Policy
New setting to block all third party cookies, regardless of whether the user
has visited a site previously
Example—foo.com iframe on apple.com won’t be able to read 

or write foo.com cookies
Safari Third Party Cookie Policy
Safari Third Party Cookie Policy
People Picker
In iOS 8, the people picker has a new mode that doesn’t prompt the user for 

access to Contacts
If your app already has access to Contacts, a reference to the selected contact is
returned from the address book
If your app does not have access, the selected contact is returned as a 

temporary copy
Some of the iOS 7 people picker delegate methods may be deprecated in a 

future seed
https://developer.apple.com/library/ios/people_picker_sample
People Picker
iOS 7 Delegate Methods
-[ABPeoplePickerNavigationControllerDelegate
peoplePickerNavigationController:shouldContinueAfterSelectingPerson:]
-[ABPeoplePickerNavigationControllerDelegate
peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:
identifier:]
People Picker
iOS 8 Properties and Delegates
ABPeoplePickerNavigationController.predicateForEnablingPerson
ABPeoplePickerNavigationController.predicateForSelectionOfPerson
ABPeoplePickerNavigationController.predicateForSelectionOfProperty
!
-[ABPeoplePickerNavigationControllerDelegate
peoplePickerNavigationController:didSelectPerson:]
-[ABPeoplePickerNavigationControllerDelegate
peoplePickerNavigationController:didSelectPerson:property:identifier:]
Understand the impact
Privacy Changes
Prompting with Purpose
Prompting with Purpose
Design the experience
Five core principles for“prompting with purpose”
• Consent
• Transparency
• Context
• Clarity
• Minimization
Prompting with Purpose
Consent
Prompting with Purpose
Consent
Prompting with Purpose
Transparency
Prompting with Purpose
Transparency
Tie prompting to a user-initiated action
Prompting with Purpose
Context
Tie prompting to a user-initiated action
Prompting with Purpose
Context
Tie prompting to a user-initiated action
Prompting with Purpose
Context
Prompting with Purpose
Clarity
Distill the purpose of your request down
to its essence
Be concise but include sufficient detail
Prompting with Purpose
Minimization
Only ask for what your application needs
Conveying Purpose
All consent dialogs support purpose strings
Highly encouraged
One purpose data class
• Location Services in iOS 8 supports two
Set in your app’s Info.plist
• Add localized versions in Localizable.strings
Look for“Privacy—“ keys and provide a value
• e.g.“Privacy—Contacts Usage Description”
Conveying Purpose
Xcode
Conveying Purpose
Xcode
New Purpose String Keys
Search for the Information Property List Key Reference in the 

Apple Developer Library for a complete list
Data Class Info.plist Key
Location (iOS)
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
Camera NSCameraUsageDescription
Health Kit NSHealthKitUsageDescription
Motion Activity (available in iOS 7) NSMotionActivityUsageDescription
Privacy Settings
Directing Users to Settings
Users may want to update their privacy settings
New in iOS 8, your app can direct users directly to settings
!
Directing Users to Settings
Users may want to update their privacy settings
New in iOS 8, your app can direct users directly to settings
!
[[UIApplication sharedApplication] openURL:[NSURL
URLWithString:UIApplicationOpenSettingsURLString]];
Your App's Privacy Settings
Your App's Privacy Settings
Data Isolation
OS mediates between application and data
Transparent to application
Existing APIs trigger user consent
• Application receives no data if denied
New and Updated Data Classes in iOS 8
Category Category
Location Updated
Contacts Updated
Calendars
Reminders
Photos
Bluetooth
Microphone
Camera (worldwide) Updated
Motion Activity Updated
Health Kit New
Social (Facebook, Twitter, etc.)
Current Support on OS X
Data Class Status
Location
Contacts
Calendars
Reminders
Social (Facebook, Twitter, etc.)
New Support
Applies to existing applications
No resubmission, recompilation
Changes can improve user experience
Data Isolation on OS X
OS X
Permission request is handled by the OS
• e.g., Address Book framework
[ABAddressBook sharedAddressBook]
[[ABPerson alloc] init]
...
Call blocks while permission is requested from the user
• Wrap in a dispatch block
• Subsequent calls return immediately
OS X
Granted access—populated object
Denied access—nil return value
For explicit data access, the permission request is handled by the OS
• Sync Services
• Spotlight
• AppleScript
OS X Sandbox
Sandboxed apps require entitlements
If permissions change, the system may SIGKILL your app
Build with only the entitlements your app needs
Related Session
A Practical Guide to the App Sandbox WWDC 2012
OS X
App Sandbox in Xcode
OS X
App Sandbox in Xcode
Data Isolation on iOS
iOS
Participation in the App Sandbox is required
Initial access will asynchronously return
Data returned to block or via delegate call
Need to handle change notifications
New APIs in iOS
Data Type System Authorization Support
Location
-[CLLocationManager requestAlwaysAuthorization]
-[CLLocationManager requestWhenInUseAuthorization]
Photos -[[PhotoKit alloc] init]
Camera -[AVCaptureDeviceInput deviceInputWithDevice:error:]
Health Kit
-[HKHealthStore authorizationStatusForDataType:]
-[HKHealthStore
requestAuthorizationToShareTypes:readTypes:completion:]
Location Services in iOS 8
Location Services supports two different
modes of updating device location
• “When In Use”
• “Always”
Depending on which versions of iOS you
target, you may need additional logic
Don’t Allow Allow
Allow “Reminders” to Access

Your Location While You Use

the App?
Reminders that alert you when you

arrive or leave need access to your

location.
Don’t Allow Allow
Allow “Weather” to Access

Your Location Even When You

Are Not Using the App?
Your location is used to show local

weather in the “Weather” app and in

Notification Center.
Location Services in iOS 8
“When In Use”Authorization
-[CLLocationManager
requestWhenInUseAuthorization]
NSLocationWhenInUseUsageDescription
Privacy-friendly mode
Cannot update location in background
No access to region monitoring,
Significant Location Change or Visits API
Double height status bar
Location Services in iOS 8
“Always”Authorization
-[CLLocationManager
requestAlwaysAuthorization]
NSLocationAlwaysUsageDescription
Increased privacy impact for the user
App can start accessing location data in
background
App has access to region monitoring, SLC
and Visits API
Default mode for applications linked to
iOS 7 or prior
iOS will occasionally re-prompt user for
access to location
Location Services in iOS 8
Location Services in iOS 8
NSLocationUsageDescription Deprecated
Location Services in iOS 8
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
Location Services in iOS 8
CLLocationManager *manager = [CLLocationManager sharedManager];
[manager startUpdatingLocation];
Location Services in iOS 8
CLLocationManager *manager = [CLLocationManager sharedManager];
if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[manager startUpdatingLocation];
} else {
[manager requestWhenInUseAuthorization];
}
Location Services in iOS 8
CLLocationManager *manager = [CLLocationManager sharedManager];
if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[manager startUpdatingLocation];
} else {
[manager requestAlwaysAuthorization];
}
Location Services in iOS 8
iOS 7 When In Use Always
Triggers user consent dialog
• • •
Access to region monitoring,
SLC & Visits API • •
Can start accessing device
location in the background • •
iOS presents double height
status bar •
App receives authorization
status callbacks • • •
Related Session
• What’s New in Core Location Marina Tuesday 2:00PM
Camera
AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *camera;
NSError *error;
!
AVCaptureDevice *captureDevice = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput
deviceInputWithDevice:camera error:&error];
!
if (captureInput) {
[_captureSession addInput:captureInput];
// handle success, video input stream should be live
} else {
// handle failure
}
Health Kit
Reading data
if ([HKHealthStore isHealthDataAvailable]) {
HKHealthStore *hs = [[HKHealthStore alloc] init];
HKObjectType *hrt = [HKObjectType
quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
[healthStore requestAuthorizationToShareTypes:nil readTypes:[NSSet
setWithObject:hrt] completion:^(BOOL success, NSError *error) {
if(success) {
// attempt to query the datastore
} else {
// handle the failure
}
}];
}
Health Kit
Writing data
HKAuthorizationStatus status = [hs authorizationStatusForDataType:hrt];
if (status == HKAuthorizationStatusNotDetermined) {
// need to prompt here
} else if (authStatus == HKAuthorizationStatusSharingAuthorized) {
// attempt to modify data store
} else {
// handle failure
}
!
Health Kit
Writing data
[hs saveObject:hkObject withCompletion:^(BOOL success, NSError *error) {
if (success) {
// save the object
}
}];
!
[hs deleteObject:hkObject withCompletion:^(BOOL success, NSError *error) {
if (success) {
// delete the object
}
}];
Testing
Just run your app
Test on device
• The Simulator supports a subset of data classes
Apps can only trigger the prompt once
• Settings > General > Reset > Reset Location & Privacy on iOS
• tccutil(1) on OS X
Test All Cases
Test All Cases
Permission being
sought and denied
Permission being
sought and granted
Permission
previously
denied
Permission
restricted
Failing Gracefully
iOS APIs help your app fail gracefully when your data access request is denied
Code should be resilient to lack of data returned
Send users to Settings
Restrictions can prevent users from changing privacy settings
• Enterprise and on-device restrictions
Restrictions
Restrictions
iOS Sample Code
Available on the iOS Developer Library today
“Checking and Requesting Access to Data Classes in Privacy Settings”project
https://developer.apple.com/library/ios/samplecode/PrivacyPrompts/
Privacy Best Practices
Privacy Best Practices
Transparency
Data collection techniques
Avoid fingerprinting
Data protection
Transparency
Give the user opportunity to inspect data
• Crashes
• Data stores
• Logging
Transparency
Privacy policy
Important for all apps to have one, required for some app categories
• Apps that link against HealthKit
• Apps that link against HomeKit
• Third party keyboards
• Kids
Can submit a link to Apple in iTunes Connect
Link visible on the App Store
Privacy Policy
iTunes Connect
iTunes Connect Mobile
The iTunes Connect Mobile app allows developers and

iBookstore providers to access their catalog and sales data

anywhere on their iPhone, iPad, or iPod touch. iTunes

Connect users can also view the metadata for all of their

titles and set specific titles as Favorites for easier tracking.
Minor bug fix for push notifications.

Adds support for iPhone 5.
iTunes,Connect,Sales,Trends,Apps,Updates,Revenue,Developer,Tools
itunesconnect.apple.com
itunesconnect.apple.com
Privacy Policy
iTunes Connect
iTunes Connect Mobile
The iTunes Connect Mobile app allows developers and

iBookstore providers to access their catalog and sales data

anywhere on their iPhone, iPad, or iPod touch. iTunes

Connect users can also view the metadata for all of their

titles and set specific titles as Favorites for easier tracking.
Minor bug fix for push notifications.

Adds support for iPhone 5.
iTunes,Connect,Sales,Trends,Apps,Updates,Revenue,Developer,Tools
itunesconnect.apple.com
itunesconnect.apple.com
A URL that links to your company's

privacy policy. Privacy policies are

recommended for all apps collecting

user or device related data, and

required for apps that offer auto-

renewable or free subscriptions, or as

otherwise required by law.
Privacy Policy
App Store
Data Collection
Data Collection
All data collection reduces privacy to some extent
• Does not imply all collection is bad/evil/wrong/misguided
Weigh the positives of your collection against the negative
True both for apps and servers
Holding on to rich data has risks
Data Collection Techniques
Anonymize
Aggregate
Sample
De-resolve
Decay
Minimize
!
Data Collection Techniques
Protecting Your User’s Privacy WWDC 2013
Fingerprinting
A collection of data that forms a unique, persistent“fingerprint”for a specific
user or device
Does not need to be personal information
Easy to do accidentally
Initial user population
OS X Yosemite installed
Screen resolution 1920x1280
PST timezone
Java installed
Cookies enabled
Flash 11.8.800.128
User-Agent Safari OS X Yosemite
Alice
Data Protection
Store important application credentials in the keychain
• Make a conscious decision whether the data will be synchronized 

among devices
Encrypt client-server communication using Transport Layer Security (TLS)
Use Data Protection for the data your application stores to disk
Local Authentication Framework
!
Summary
Test to understand the impact of the privacy related changes
Prompt users well by designing the experience and utilizing purpose strings
Consider new and updated data classes, such as Core Location and HealthKit
Submit a privacy policy link to the App Store
Maintain your reputation by thinking through privacy implications in your design
More Information
Paul Danbold
Core OS Technologies Evangelist
danbold@apple.com
!
Sample Code
Checking and Requesting Access to Data Classes in Privacy Settings
https://developer.apple.com/library/ios/samplecode/PrivacyPrompts/
People Picker
https://developer.apple.com/library/ios/people_picker_sample
More Information
Documentation
Best Practices for Maintaining User Privacy
https://developer.apple.com/library/ios/documentation/iphone/conceptual/
iphoneosprogrammingguide/AppDesignBasics/AppDesignBasics.html
Apple Developer Forums
http://devforums.apple.com
Related Sessions
• Kids and Apps Nob Hill Thursday 3:15PM
• What’s New in Core Location Marina Tuesday 2:00PM
• Keychain and Authentication with Touch ID Nob Hill Wednesday 10:15AM
Protecting Your User’s Privacy WWDC 2013
Protecting User’s Data WWDC 2013
A Practical Guide to the App Sandbox WWDC 2012
Labs
• Security and Privacy Lab Core OS Lab B Thursday 3:15PM
User privacy in Apple iOS 8 and OS X

More Related Content

Similar to User privacy in Apple iOS 8 and OS X

Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Mobivery
 
InMobi Webinar - Maximizing monetization with InMobi Ad SDK400
InMobi Webinar -  Maximizing monetization with InMobi Ad SDK400InMobi Webinar -  Maximizing monetization with InMobi Ad SDK400
InMobi Webinar - Maximizing monetization with InMobi Ad SDK400InMobi
 
CIS14: PingOne IDaaS: What You Need to Know
CIS14: PingOne IDaaS: What You Need to KnowCIS14: PingOne IDaaS: What You Need to Know
CIS14: PingOne IDaaS: What You Need to KnowCloudIDSummit
 
PingOne IDaaS: What You Need to Know
PingOne IDaaS: What You Need to KnowPingOne IDaaS: What You Need to Know
PingOne IDaaS: What You Need to KnowCloudIDSummit
 
Building Enterprise Ready Mobile Apps: A Developer Deep Dive
Building Enterprise Ready Mobile Apps: A Developer Deep DiveBuilding Enterprise Ready Mobile Apps: A Developer Deep Dive
Building Enterprise Ready Mobile Apps: A Developer Deep Divekidozen
 
Step-by-Step Guide to Developing a Successful iOS App.docx
Step-by-Step Guide to Developing a Successful iOS App.docxStep-by-Step Guide to Developing a Successful iOS App.docx
Step-by-Step Guide to Developing a Successful iOS App.docxBytes Technolab Inc.
 
SharePoint 2013 Apps and the App Model
SharePoint 2013 Apps and the App ModelSharePoint 2013 Apps and the App Model
SharePoint 2013 Apps and the App ModelJames Tramel
 
Step-by-Step Guide to Developing a Successful iOS App.pdf
Step-by-Step Guide to Developing a Successful iOS App.pdfStep-by-Step Guide to Developing a Successful iOS App.pdf
Step-by-Step Guide to Developing a Successful iOS App.pdfBytes Technolab Inc.
 
Doddanna_B_Java_Android_Trnd_EC_70%
Doddanna_B_Java_Android_Trnd_EC_70%Doddanna_B_Java_Android_Trnd_EC_70%
Doddanna_B_Java_Android_Trnd_EC_70%Doddanna B
 
Telerik Platform
Telerik PlatformTelerik Platform
Telerik PlatformNoam Kfir
 
Securing your Applications for the Cloud Age
Securing your Applications for the Cloud AgeSecuring your Applications for the Cloud Age
Securing your Applications for the Cloud AgeArtur Alves
 
Personium - Open Source PDS envisioning the Web of MyData
Personium - Open Source PDS envisioning the Web of MyDataPersonium - Open Source PDS envisioning the Web of MyData
Personium - Open Source PDS envisioning the Web of MyData暁生 下野
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App StoreGeoffrey Goetz
 
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012itslearning Nederland
 
20120612 itslearning app library dag
20120612 itslearning app library dag20120612 itslearning app library dag
20120612 itslearning app library dagTim Remmers
 
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...RIA RUI Society
 

Similar to User privacy in Apple iOS 8 and OS X (20)

Android_ver_01
Android_ver_01Android_ver_01
Android_ver_01
 
Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V)
 
Iphone development
Iphone developmentIphone development
Iphone development
 
InMobi Webinar - Maximizing monetization with InMobi Ad SDK400
InMobi Webinar -  Maximizing monetization with InMobi Ad SDK400InMobi Webinar -  Maximizing monetization with InMobi Ad SDK400
InMobi Webinar - Maximizing monetization with InMobi Ad SDK400
 
CIS14: PingOne IDaaS: What You Need to Know
CIS14: PingOne IDaaS: What You Need to KnowCIS14: PingOne IDaaS: What You Need to Know
CIS14: PingOne IDaaS: What You Need to Know
 
PingOne IDaaS: What You Need to Know
PingOne IDaaS: What You Need to KnowPingOne IDaaS: What You Need to Know
PingOne IDaaS: What You Need to Know
 
Building Enterprise Ready Mobile Apps: A Developer Deep Dive
Building Enterprise Ready Mobile Apps: A Developer Deep DiveBuilding Enterprise Ready Mobile Apps: A Developer Deep Dive
Building Enterprise Ready Mobile Apps: A Developer Deep Dive
 
Step-by-Step Guide to Developing a Successful iOS App.docx
Step-by-Step Guide to Developing a Successful iOS App.docxStep-by-Step Guide to Developing a Successful iOS App.docx
Step-by-Step Guide to Developing a Successful iOS App.docx
 
SharePoint 2013 Apps and the App Model
SharePoint 2013 Apps and the App ModelSharePoint 2013 Apps and the App Model
SharePoint 2013 Apps and the App Model
 
Step-by-Step Guide to Developing a Successful iOS App.pdf
Step-by-Step Guide to Developing a Successful iOS App.pdfStep-by-Step Guide to Developing a Successful iOS App.pdf
Step-by-Step Guide to Developing a Successful iOS App.pdf
 
Doddanna_B_Java_Android_Trnd_EC_70%
Doddanna_B_Java_Android_Trnd_EC_70%Doddanna_B_Java_Android_Trnd_EC_70%
Doddanna_B_Java_Android_Trnd_EC_70%
 
Resume_IOS_3.9 (1).DOC
Resume_IOS_3.9 (1).DOCResume_IOS_3.9 (1).DOC
Resume_IOS_3.9 (1).DOC
 
Are You Ready for iOS 8?
Are You Ready for iOS 8?Are You Ready for iOS 8?
Are You Ready for iOS 8?
 
Telerik Platform
Telerik PlatformTelerik Platform
Telerik Platform
 
Securing your Applications for the Cloud Age
Securing your Applications for the Cloud AgeSecuring your Applications for the Cloud Age
Securing your Applications for the Cloud Age
 
Personium - Open Source PDS envisioning the Web of MyData
Personium - Open Source PDS envisioning the Web of MyDataPersonium - Open Source PDS envisioning the Web of MyData
Personium - Open Source PDS envisioning the Web of MyData
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App Store
 
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012
itslearning App Library dag voor partners - Tim Remmers - 12 juni 2012
 
20120612 itslearning app library dag
20120612 itslearning app library dag20120612 itslearning app library dag
20120612 itslearning app library dag
 
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
 

More from Ludovic Privat

2019 bluetooth-market-update
2019 bluetooth-market-update2019 bluetooth-market-update
2019 bluetooth-market-updateLudovic Privat
 
New era of location tracking - CROWDLOC slides Where Camp Berlin
New era of location tracking - CROWDLOC slides Where Camp BerlinNew era of location tracking - CROWDLOC slides Where Camp Berlin
New era of location tracking - CROWDLOC slides Where Camp BerlinLudovic Privat
 
Aftersales magazine - Connected Driver & Smart Mobility 2017
Aftersales magazine - Connected Driver & Smart Mobility 2017Aftersales magazine - Connected Driver & Smart Mobility 2017
Aftersales magazine - Connected Driver & Smart Mobility 2017Ludovic Privat
 
Brochure ConnecteDriver 2017
Brochure ConnecteDriver 2017Brochure ConnecteDriver 2017
Brochure ConnecteDriver 2017Ludovic Privat
 
u-blox Presentation half year 2016_1_2
u-blox Presentation half year 2016_1_2u-blox Presentation half year 2016_1_2
u-blox Presentation half year 2016_1_2Ludovic Privat
 
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...Ludovic Privat
 
Opinion way les Français et les paradoxes de l'automobile - juin 2016
Opinion way les Français et les paradoxes de l'automobile - juin 2016Opinion way les Français et les paradoxes de l'automobile - juin 2016
Opinion way les Français et les paradoxes de l'automobile - juin 2016Ludovic Privat
 
Garmin 2016 Q1 earning s call webcast slides
Garmin 2016 Q1 earning s call webcast slidesGarmin 2016 Q1 earning s call webcast slides
Garmin 2016 Q1 earning s call webcast slidesLudovic Privat
 
Declaration of Amsterdam Autonomous Driving 2016 04-08
Declaration of Amsterdam Autonomous Driving 2016 04-08 Declaration of Amsterdam Autonomous Driving 2016 04-08
Declaration of Amsterdam Autonomous Driving 2016 04-08 Ludovic Privat
 
Garmin Q42015 Earnings call slides
Garmin Q42015 Earnings call slides Garmin Q42015 Earnings call slides
Garmin Q42015 Earnings call slides Ludovic Privat
 
Inrix competitive parking lot benchmark against Parkopedia
Inrix competitive parking lot benchmark against ParkopediaInrix competitive parking lot benchmark against Parkopedia
Inrix competitive parking lot benchmark against ParkopediaLudovic Privat
 
Yelp Q4 2015 investor presentation
Yelp Q4 2015 investor presentationYelp Q4 2015 investor presentation
Yelp Q4 2015 investor presentationLudovic Privat
 
Garmin Q3 2015 earnings call presneentation
Garmin Q3 2015 earnings call presneentationGarmin Q3 2015 earnings call presneentation
Garmin Q3 2015 earnings call presneentationLudovic Privat
 
u-blox Finnancial Presentation H1 2015
u-blox Finnancial Presentation H1 2015u-blox Finnancial Presentation H1 2015
u-blox Finnancial Presentation H1 2015Ludovic Privat
 
2015 UBI Research Results for the Consumer Market - LexisNexis
2015 UBI Research Results for the Consumer Market - LexisNexis2015 UBI Research Results for the Consumer Market - LexisNexis
2015 UBI Research Results for the Consumer Market - LexisNexisLudovic Privat
 
Moasis guide to location technology
Moasis guide to location technologyMoasis guide to location technology
Moasis guide to location technologyLudovic Privat
 
Mobile, Beacons and OOH whitepaper
Mobile, Beacons and OOH whitepaperMobile, Beacons and OOH whitepaper
Mobile, Beacons and OOH whitepaperLudovic Privat
 

More from Ludovic Privat (20)

XYZ geoflex-pps45-51
XYZ geoflex-pps45-51XYZ geoflex-pps45-51
XYZ geoflex-pps45-51
 
2019 bluetooth-market-update
2019 bluetooth-market-update2019 bluetooth-market-update
2019 bluetooth-market-update
 
New era of location tracking - CROWDLOC slides Where Camp Berlin
New era of location tracking - CROWDLOC slides Where Camp BerlinNew era of location tracking - CROWDLOC slides Where Camp Berlin
New era of location tracking - CROWDLOC slides Where Camp Berlin
 
Aftersales magazine - Connected Driver & Smart Mobility 2017
Aftersales magazine - Connected Driver & Smart Mobility 2017Aftersales magazine - Connected Driver & Smart Mobility 2017
Aftersales magazine - Connected Driver & Smart Mobility 2017
 
Brochure ConnecteDriver 2017
Brochure ConnecteDriver 2017Brochure ConnecteDriver 2017
Brochure ConnecteDriver 2017
 
u-blox Presentation half year 2016_1_2
u-blox Presentation half year 2016_1_2u-blox Presentation half year 2016_1_2
u-blox Presentation half year 2016_1_2
 
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...
Study HERE SBD - How autonomous vehicles could relieve or worsen traffic cong...
 
Opinion way les Français et les paradoxes de l'automobile - juin 2016
Opinion way les Français et les paradoxes de l'automobile - juin 2016Opinion way les Français et les paradoxes de l'automobile - juin 2016
Opinion way les Français et les paradoxes de l'automobile - juin 2016
 
Garmin 2016 Q1 earning s call webcast slides
Garmin 2016 Q1 earning s call webcast slidesGarmin 2016 Q1 earning s call webcast slides
Garmin 2016 Q1 earning s call webcast slides
 
Declaration of Amsterdam Autonomous Driving 2016 04-08
Declaration of Amsterdam Autonomous Driving 2016 04-08 Declaration of Amsterdam Autonomous Driving 2016 04-08
Declaration of Amsterdam Autonomous Driving 2016 04-08
 
PoLTE whitepaper
PoLTE whitepaperPoLTE whitepaper
PoLTE whitepaper
 
Garmin Q42015 Earnings call slides
Garmin Q42015 Earnings call slides Garmin Q42015 Earnings call slides
Garmin Q42015 Earnings call slides
 
Inrix competitive parking lot benchmark against Parkopedia
Inrix competitive parking lot benchmark against ParkopediaInrix competitive parking lot benchmark against Parkopedia
Inrix competitive parking lot benchmark against Parkopedia
 
Yelp Q4 2015 investor presentation
Yelp Q4 2015 investor presentationYelp Q4 2015 investor presentation
Yelp Q4 2015 investor presentation
 
NavAds-Whitepaper-v3
NavAds-Whitepaper-v3NavAds-Whitepaper-v3
NavAds-Whitepaper-v3
 
Garmin Q3 2015 earnings call presneentation
Garmin Q3 2015 earnings call presneentationGarmin Q3 2015 earnings call presneentation
Garmin Q3 2015 earnings call presneentation
 
u-blox Finnancial Presentation H1 2015
u-blox Finnancial Presentation H1 2015u-blox Finnancial Presentation H1 2015
u-blox Finnancial Presentation H1 2015
 
2015 UBI Research Results for the Consumer Market - LexisNexis
2015 UBI Research Results for the Consumer Market - LexisNexis2015 UBI Research Results for the Consumer Market - LexisNexis
2015 UBI Research Results for the Consumer Market - LexisNexis
 
Moasis guide to location technology
Moasis guide to location technologyMoasis guide to location technology
Moasis guide to location technology
 
Mobile, Beacons and OOH whitepaper
Mobile, Beacons and OOH whitepaperMobile, Beacons and OOH whitepaper
Mobile, Beacons and OOH whitepaper
 

Recently uploaded

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 

Recently uploaded (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 

User privacy in Apple iOS 8 and OS X

  • 1. © 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC14 User Privacy on iOS and OS X Session 715 David Stites Apple Product Security and Privacy Core OS ! Katie Skinner Apple Product Security and Privacy
  • 2. Agenda Privacy and Reputation Identifiers Privacy Changes and Features Prompting with Purpose Data Isolation Privacy Best Practices
  • 5. Identifier APIs Application Identifier [NSUUID UUID] Vendor Identifier [[UIDevice currentDevice] identifierForVendor] Advertising Identifier [[UIDevice currentDevice] identifierForAdvertising]
  • 6. Identifier APIs Protecting Your User’s Privacy WWDC 2013
  • 7. Identifier APIs Scope Lifetime Backed Up Restores Across Devices Application ID App Uninstall app Yes Yes Vendor ID Developer Uninstall 
 developer’s apps Yes No Advertising ID Device “Reset Advertising ID” Yes No
  • 8. Advertising Identifier Be transparent about advertising practices Do not cache the Advertising ID • The ID can be changed via“Reset Advertising ID”button in 
 Settings > Privacy > Advertising Advertising Identifier will be different every time the API is called for TestFlight apps
  • 9. Limit Ad Tracking Limit Ad Tracking gives customers a choice in how advertising is served [[ASIdentifierManager sharedManager] advertisingTrackingEnabled] Required to check the value of this property before using Advertising Identifier Can be controlled by restrictions
  • 10. Advertising Identifier Limit Ad Tracking When the value of advertisingTrackingEnabled is NO, the advertising identifier is not permitted to be used to collect data for or serve targeted advertising !
  • 11. Advertising Identifier When the value of advertisingTrackingEnabled is NO, the advertising identifier is only permitted to be used for the purposes enumerated in the iOS Program License Agreement • Frequency capping • Attribution • Conversion events • Estimating the number of unique users • Fraud detection for advertising • Debugging for advertising Limit Ad Tracking
  • 12. Advertising Identifier In iTunes Connect, select how your app is using the Advertising Identifier • Serve advertisements • Attribute app installation with previously served advertisement • Attribute an action taken to a previously served advertisement ! !
  • 13. iTunes Connect and Advertising Identifier jappleseed John Appleseed,
  • 14. iTunes Connect and Advertising Identifier jappleseed John Appleseed, John Appleseed,
  • 16. Family Sharing There will be an increased number of accounts belonging to children Consider implications for your app under relevant laws • Example—COPPA (Children’s Online Privacy Protection Act) in the United States !
  • 17. Related Session • Kids and Apps Nob Hill Thursday 3:15PM
  • 18. MAC Address In iOS 8, Wi-Fi scanning behavior has changed to use random, locally administrated MAC addresses • Probe requests (management frame sub-type 0x4) • Probe responses (management frame sub-type 0x5) The MAC address used for Wi-Fi scans may not always be the device’s real 
 (universal) address
  • 19. Safari Third Party Cookie Policy New setting to block all third party cookies, regardless of whether the user has visited a site previously Example—foo.com iframe on apple.com won’t be able to read 
 or write foo.com cookies
  • 20. Safari Third Party Cookie Policy
  • 21. Safari Third Party Cookie Policy
  • 22. People Picker In iOS 8, the people picker has a new mode that doesn’t prompt the user for 
 access to Contacts If your app already has access to Contacts, a reference to the selected contact is returned from the address book If your app does not have access, the selected contact is returned as a 
 temporary copy Some of the iOS 7 people picker delegate methods may be deprecated in a 
 future seed https://developer.apple.com/library/ios/people_picker_sample
  • 23. People Picker iOS 7 Delegate Methods -[ABPeoplePickerNavigationControllerDelegate peoplePickerNavigationController:shouldContinueAfterSelectingPerson:] -[ABPeoplePickerNavigationControllerDelegate peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property: identifier:]
  • 24. People Picker iOS 8 Properties and Delegates ABPeoplePickerNavigationController.predicateForEnablingPerson ABPeoplePickerNavigationController.predicateForSelectionOfPerson ABPeoplePickerNavigationController.predicateForSelectionOfProperty ! -[ABPeoplePickerNavigationControllerDelegate peoplePickerNavigationController:didSelectPerson:] -[ABPeoplePickerNavigationControllerDelegate peoplePickerNavigationController:didSelectPerson:property:identifier:]
  • 27. Prompting with Purpose Design the experience Five core principles for“prompting with purpose” • Consent • Transparency • Context • Clarity • Minimization
  • 32. Tie prompting to a user-initiated action Prompting with Purpose Context
  • 33. Tie prompting to a user-initiated action Prompting with Purpose Context
  • 34. Tie prompting to a user-initiated action Prompting with Purpose Context
  • 35. Prompting with Purpose Clarity Distill the purpose of your request down to its essence Be concise but include sufficient detail
  • 36. Prompting with Purpose Minimization Only ask for what your application needs
  • 37. Conveying Purpose All consent dialogs support purpose strings Highly encouraged One purpose data class • Location Services in iOS 8 supports two Set in your app’s Info.plist • Add localized versions in Localizable.strings Look for“Privacy—“ keys and provide a value • e.g.“Privacy—Contacts Usage Description”
  • 40. New Purpose String Keys Search for the Information Property List Key Reference in the 
 Apple Developer Library for a complete list Data Class Info.plist Key Location (iOS) NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription Camera NSCameraUsageDescription Health Kit NSHealthKitUsageDescription Motion Activity (available in iOS 7) NSMotionActivityUsageDescription
  • 42. Directing Users to Settings Users may want to update their privacy settings New in iOS 8, your app can direct users directly to settings !
  • 43. Directing Users to Settings Users may want to update their privacy settings New in iOS 8, your app can direct users directly to settings ! [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
  • 44. Your App's Privacy Settings
  • 45. Your App's Privacy Settings
  • 46. Data Isolation OS mediates between application and data Transparent to application Existing APIs trigger user consent • Application receives no data if denied
  • 47. New and Updated Data Classes in iOS 8 Category Category Location Updated Contacts Updated Calendars Reminders Photos Bluetooth Microphone Camera (worldwide) Updated Motion Activity Updated Health Kit New Social (Facebook, Twitter, etc.)
  • 48. Current Support on OS X Data Class Status Location Contacts Calendars Reminders Social (Facebook, Twitter, etc.)
  • 49. New Support Applies to existing applications No resubmission, recompilation Changes can improve user experience
  • 51. OS X Permission request is handled by the OS • e.g., Address Book framework [ABAddressBook sharedAddressBook] [[ABPerson alloc] init] ... Call blocks while permission is requested from the user • Wrap in a dispatch block • Subsequent calls return immediately
  • 52. OS X Granted access—populated object Denied access—nil return value For explicit data access, the permission request is handled by the OS • Sync Services • Spotlight • AppleScript
  • 53. OS X Sandbox Sandboxed apps require entitlements If permissions change, the system may SIGKILL your app Build with only the entitlements your app needs
  • 54. Related Session A Practical Guide to the App Sandbox WWDC 2012
  • 55. OS X App Sandbox in Xcode
  • 56. OS X App Sandbox in Xcode
  • 58. iOS Participation in the App Sandbox is required Initial access will asynchronously return Data returned to block or via delegate call Need to handle change notifications
  • 59. New APIs in iOS Data Type System Authorization Support Location -[CLLocationManager requestAlwaysAuthorization] -[CLLocationManager requestWhenInUseAuthorization] Photos -[[PhotoKit alloc] init] Camera -[AVCaptureDeviceInput deviceInputWithDevice:error:] Health Kit -[HKHealthStore authorizationStatusForDataType:] -[HKHealthStore requestAuthorizationToShareTypes:readTypes:completion:]
  • 60. Location Services in iOS 8 Location Services supports two different modes of updating device location • “When In Use” • “Always” Depending on which versions of iOS you target, you may need additional logic Don’t Allow Allow Allow “Reminders” to Access
 Your Location While You Use
 the App? Reminders that alert you when you
 arrive or leave need access to your
 location. Don’t Allow Allow Allow “Weather” to Access
 Your Location Even When You
 Are Not Using the App? Your location is used to show local
 weather in the “Weather” app and in
 Notification Center.
  • 61. Location Services in iOS 8 “When In Use”Authorization -[CLLocationManager requestWhenInUseAuthorization] NSLocationWhenInUseUsageDescription Privacy-friendly mode Cannot update location in background No access to region monitoring, Significant Location Change or Visits API Double height status bar
  • 62. Location Services in iOS 8 “Always”Authorization -[CLLocationManager requestAlwaysAuthorization] NSLocationAlwaysUsageDescription Increased privacy impact for the user App can start accessing location data in background App has access to region monitoring, SLC and Visits API Default mode for applications linked to iOS 7 or prior iOS will occasionally re-prompt user for access to location
  • 64. Location Services in iOS 8 NSLocationUsageDescription Deprecated
  • 65. Location Services in iOS 8 NSLocationUsageDescription NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription
  • 66. Location Services in iOS 8 CLLocationManager *manager = [CLLocationManager sharedManager]; [manager startUpdatingLocation];
  • 67. Location Services in iOS 8 CLLocationManager *manager = [CLLocationManager sharedManager]; if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { [manager startUpdatingLocation]; } else { [manager requestWhenInUseAuthorization]; }
  • 68. Location Services in iOS 8 CLLocationManager *manager = [CLLocationManager sharedManager]; if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { [manager startUpdatingLocation]; } else { [manager requestAlwaysAuthorization]; }
  • 69. Location Services in iOS 8 iOS 7 When In Use Always Triggers user consent dialog • • • Access to region monitoring, SLC & Visits API • • Can start accessing device location in the background • • iOS presents double height status bar • App receives authorization status callbacks • • •
  • 70. Related Session • What’s New in Core Location Marina Tuesday 2:00PM
  • 71. Camera AVCaptureSession *captureSession = [[AVCaptureSession alloc] init]; AVCaptureDevice *camera; NSError *error; ! AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&error]; ! if (captureInput) { [_captureSession addInput:captureInput]; // handle success, video input stream should be live } else { // handle failure }
  • 72. Health Kit Reading data if ([HKHealthStore isHealthDataAvailable]) { HKHealthStore *hs = [[HKHealthStore alloc] init]; HKObjectType *hrt = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]; [healthStore requestAuthorizationToShareTypes:nil readTypes:[NSSet setWithObject:hrt] completion:^(BOOL success, NSError *error) { if(success) { // attempt to query the datastore } else { // handle the failure } }]; }
  • 73. Health Kit Writing data HKAuthorizationStatus status = [hs authorizationStatusForDataType:hrt]; if (status == HKAuthorizationStatusNotDetermined) { // need to prompt here } else if (authStatus == HKAuthorizationStatusSharingAuthorized) { // attempt to modify data store } else { // handle failure } !
  • 74. Health Kit Writing data [hs saveObject:hkObject withCompletion:^(BOOL success, NSError *error) { if (success) { // save the object } }]; ! [hs deleteObject:hkObject withCompletion:^(BOOL success, NSError *error) { if (success) { // delete the object } }];
  • 75. Testing Just run your app Test on device • The Simulator supports a subset of data classes Apps can only trigger the prompt once • Settings > General > Reset > Reset Location & Privacy on iOS • tccutil(1) on OS X
  • 77. Test All Cases Permission being sought and denied Permission being sought and granted Permission previously denied Permission restricted
  • 78. Failing Gracefully iOS APIs help your app fail gracefully when your data access request is denied Code should be resilient to lack of data returned Send users to Settings Restrictions can prevent users from changing privacy settings • Enterprise and on-device restrictions
  • 81. iOS Sample Code Available on the iOS Developer Library today “Checking and Requesting Access to Data Classes in Privacy Settings”project https://developer.apple.com/library/ios/samplecode/PrivacyPrompts/
  • 83. Privacy Best Practices Transparency Data collection techniques Avoid fingerprinting Data protection
  • 84. Transparency Give the user opportunity to inspect data • Crashes • Data stores • Logging
  • 85. Transparency Privacy policy Important for all apps to have one, required for some app categories • Apps that link against HealthKit • Apps that link against HomeKit • Third party keyboards • Kids Can submit a link to Apple in iTunes Connect Link visible on the App Store
  • 86. Privacy Policy iTunes Connect iTunes Connect Mobile The iTunes Connect Mobile app allows developers and
 iBookstore providers to access their catalog and sales data
 anywhere on their iPhone, iPad, or iPod touch. iTunes
 Connect users can also view the metadata for all of their
 titles and set specific titles as Favorites for easier tracking. Minor bug fix for push notifications.
 Adds support for iPhone 5. iTunes,Connect,Sales,Trends,Apps,Updates,Revenue,Developer,Tools itunesconnect.apple.com itunesconnect.apple.com
  • 87. Privacy Policy iTunes Connect iTunes Connect Mobile The iTunes Connect Mobile app allows developers and
 iBookstore providers to access their catalog and sales data
 anywhere on their iPhone, iPad, or iPod touch. iTunes
 Connect users can also view the metadata for all of their
 titles and set specific titles as Favorites for easier tracking. Minor bug fix for push notifications.
 Adds support for iPhone 5. iTunes,Connect,Sales,Trends,Apps,Updates,Revenue,Developer,Tools itunesconnect.apple.com itunesconnect.apple.com A URL that links to your company's
 privacy policy. Privacy policies are
 recommended for all apps collecting
 user or device related data, and
 required for apps that offer auto-
 renewable or free subscriptions, or as
 otherwise required by law.
  • 90. Data Collection All data collection reduces privacy to some extent • Does not imply all collection is bad/evil/wrong/misguided Weigh the positives of your collection against the negative True both for apps and servers Holding on to rich data has risks
  • 92. Data Collection Techniques Protecting Your User’s Privacy WWDC 2013
  • 93. Fingerprinting A collection of data that forms a unique, persistent“fingerprint”for a specific user or device Does not need to be personal information Easy to do accidentally
  • 95. OS X Yosemite installed
  • 101. User-Agent Safari OS X Yosemite
  • 102. Alice
  • 103. Data Protection Store important application credentials in the keychain • Make a conscious decision whether the data will be synchronized 
 among devices Encrypt client-server communication using Transport Layer Security (TLS) Use Data Protection for the data your application stores to disk Local Authentication Framework !
  • 104. Summary Test to understand the impact of the privacy related changes Prompt users well by designing the experience and utilizing purpose strings Consider new and updated data classes, such as Core Location and HealthKit Submit a privacy policy link to the App Store Maintain your reputation by thinking through privacy implications in your design
  • 105. More Information Paul Danbold Core OS Technologies Evangelist danbold@apple.com ! Sample Code Checking and Requesting Access to Data Classes in Privacy Settings https://developer.apple.com/library/ios/samplecode/PrivacyPrompts/ People Picker https://developer.apple.com/library/ios/people_picker_sample
  • 106. More Information Documentation Best Practices for Maintaining User Privacy https://developer.apple.com/library/ios/documentation/iphone/conceptual/ iphoneosprogrammingguide/AppDesignBasics/AppDesignBasics.html Apple Developer Forums http://devforums.apple.com
  • 107. Related Sessions • Kids and Apps Nob Hill Thursday 3:15PM • What’s New in Core Location Marina Tuesday 2:00PM • Keychain and Authentication with Touch ID Nob Hill Wednesday 10:15AM Protecting Your User’s Privacy WWDC 2013 Protecting User’s Data WWDC 2013 A Practical Guide to the App Sandbox WWDC 2012
  • 108. Labs • Security and Privacy Lab Core OS Lab B Thursday 3:15PM