WWDC 2015

Privacy And Your App

This sessions talks about the goal and measure of Apple and new privacy update for iOS 9.

Update

In iOS 9, the developer must add these info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>urlscheme</string>
    <string>urlscheme2</string>
    <string>urlscheme3</string>
    <string>urlscheme4</string>
</array>

to show the intent for calling external apps if the app call canOpenUrl for these urlSchemes

If a url scheme is declared and calling canOpenURL(scheme)

YES if a installed app supports that URL scheme

NO if no app supporting that url

syslog will show capOpenURL: failed for URL: "urlScheme://" - error: null

If a url scheme is not declared and calling canOpenURL(scheme)

always return NO

syslog will show capOpenURL: failed for URL: "urlScheme://" - error: null

50 max. unqiue URL scheme can be declared!

Unverisal Links -> Seamless linking to your app

low level functions

sysctl() will not allowed

Safari Content Blocker (new extension)

Blocks list for safari and safari view controller UIWebView is not affected

OS X

Cookies not shared and in sepearated process in El Captian

WatchOS

Privacy setting are shared between paired devices(Watch and Phone) Privacy setting across all extensions

Keychain is available on watchOS 2

Idenitifers:

  • Name
  • Phone number
  • Randomly generated number
  • UUID

Identifier for developers

WatchOS 2 requires developer to maintain the Vendor ID and Advertising ID.

Best Practices

  1. Determine if an identifier is needed
  2. If you need an identifier, properly scope it
  3. Use OS provided identifiers
  4. Ensure the usage follows the guideline
  5. Always check the value of Limit Ad tracking and the advestingIdentifier before use it
    1. let identifierAdvertising = ASIdentifierManager,shareManager().advestingIdentifier.UUIDString
  6. never cache as user can reset the identifier

Protect User Data

  • NSURLErrorAppTransportSecurityRequiresSecureConnection will throw if there is an insecure connections

    • add exception in info.plist
    • Loyalty Passes
      • Related Session :Wallet - The home for Aplle pay and more
    • Deep App Search

      • NSUserActivity

        • all apps
        • Extension of iOS 8 handoff app
        • setting these properties for searching
          • eligibleForHandoff
          • eligibleForSearch
          • eligibleForPublicIndexing
          • expirationDate
          • all default off
          • if threshold exceeds , the data can be search publicly
          • CoreSpotlight for protect files for searching
          • func indexSearchableItem for updating index
          • func deleteSearchItemWithIdentifiers for delete from index
          • func deleteSearchItemsWithDomainIdentifiers for delete from index
          • func deleteSearchItemWithCompletionHandler for delete from index
      • Related Session : introducing app search

Existing Technologies for protect user data

  • Touch ID
  • Apple Pay
  • Privacy Policy transparence
    • iTunes Privacy Policy URL
  • Data protection
    • hardware encryption
    • per file encryption