session 414 - building, archiving, and submitting your app

Upload: foufoutos73

Post on 03-Apr-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    1/94

    These are confidential sessionsplease refrain from streaming, blogging, or taking pictures

    iOS and OS X tips, tricks, and best practices

    Session 414

    Rob MariniXcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    2/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    3/94

    Distribution

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    4/94

    Distributing Outsidethe App Store

    Distributing in theApp Store

    iOS Application BestPractices

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    5/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    6/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    7/94

    Distributing outside the App Store

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    8/94

    Gatekeeper

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    9/94

    Gatekeeper

    Turned on by default in Mountain Lion

    Protect users from malicious applications

    Mac App Store and Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    10/94

    Gatekeeper

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    11/94

    Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    12/94

    Developer ID

    Identifies you as being trusted by Apple

    OS ensures that executable content comes only from you

    Built-in support in Xcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    13/94

    Obtaining a Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    14/94

    Obtaining a Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    15/94

    Obtaining a Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    16/94

    Obtaining a Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    17/94

    Obtaining a Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    18/94

    Types of IDs

    Developer ID Application

    For signing .app bundles

    Developer ID Installer

    For signing installer packages containing .app bundles

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    19/94

    Signing an application

    Test code signed application under the debugger

    Sign your application to profile launch times

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    20/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    21/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    22/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    23/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    24/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    25/94

    Signing an application

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    26/94

    Exporting an application

    Sign an archive of your application with your Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    27/94

    Exporting an application

    Sign an archive of your application with your Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    28/94

    Exporting an application

    Sign an archive of your application with your Developer ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    29/94

    Sandboxing and entitlements

    Yevgeny BinderXcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    30/94

    Confine apps to a subset ofsystem resources

    Limit direct access to hardware

    and personal data Mitigate consequences of

    worst-case scenario

    Extra peace of mind for userswith no cost to you

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    31/94

    Enabling sandboxing

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    32/94

    Enabling sandboxing

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    33/94

    Enabling sandboxing

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    34/94

    Granular permissions for sandboxed apps

    Clear declaration of your apps needs and intent to system APIs

    Permit controlled pinholes in security layer

    Personal DataFilesystem Network Hardware

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    35/94

    Choosing entitlements

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    36/94

    Choosing entitlements

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    37/94

    Obtain aDeveloper ID

    Configure yourproject to usecode signing

    Secure your appwith sandboxingand entitlements

    Build and archiveyour signed app

    1 2 3 4

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    38/94

    Demo

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    39/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    40/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    41/94

    Distributing in the App Store

    Rob MariniXcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    42/94

    iCloud, Apple Push Notification Service,Game Center, In-App Purchase

    Distribution well integrated with Xcode

    Works with all Gatekeeper configurations

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    43/94

    Configuring your app

    Bundle ID and app ID

    Sandboxing and entitlements

    Validating your app

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    44/94

    CFBundleIdentifier

    Must be unique

    Must match the app ID from a provisioning profile

    Should be the same for Developer ID signed apps

    Shared filesystem sandbox

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    45/94

    Sandboxing and entitlements

    All App Store apps must be sandboxed

    Entitlements for App Store-specific technologies

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    46/94

    Sandboxing and entitlements

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    47/94

    Sandboxing and entitlements

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    48/94

    Validating your app

    Built application archives can be tested locally in Xcode against AppStore requirements

    Online validation from Xcode uses up-to-date data from the App Store

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    49/94

    Validating your app

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    50/94

    Validating your app

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    51/94

    App Store-specific technologies

    Itai RomXcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    52/94

    Overview

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    53/94

    Overview

    Provisioning profiles are required

    In-App Purchase content can nowbe created and submitted to the

    App Store from Xcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    54/94

    Team roles

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    55/94

    Team members

    Download provisioning profiles

    Request certificates

    Obtain software assets

    Typically engineers

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    56/94

    Team admins

    Manage team members

    Create and approve certificates

    Create provisioning profiles

    Register hardware and app IDs

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    57/94

    Team agent

    Manage team membership

    Manage the developer program

    Submit applications

    Create distribution certificates

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    58/94

    What exactly is a provisioning profile?

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    59/94

    Provisioning Profile

    What exactly is a provisioning profile?

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    60/94

    Provisioning Profile

    What exactly is a provisioning profile?

    App ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    61/94

    Provisioning Profile

    What exactly is a provisioning profile?

    App ID Certificates

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    62/94

    Provisioning Profile

    What exactly is a provisioning profile?

    App ID Certificates Device IDs

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    63/94

    Provisioning Profile

    What exactly is a provisioning profile?

    An app signed by the following peoplemay run on the following devices

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    64/94

    Explicit app IDs

    Explicit app IDs match exactlyone app

    Created on the developer portal

    Required for In-App Purchase,Game Center, and Apple PushNotification Service

    Bundle ID search string

    com.apple.Recipes

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    65/94

    Wildcard app IDs

    Wildcard app IDs match multiple apps

    Xcode creates one for youautomatically

    Useful when you start developingnew apps

    Can be used to enable iCloud

    Bundle ID search string

    com.apple.*

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    66/94

    Registering an app ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    67/94

    Registering an app ID

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    68/94

    Configuring an app ID for additional services

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    69/94

    Configuring an app ID for additional services

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    70/94

    Provisioning profiles

    Team provisioning profiles:

    Created and maintained by Xcode

    Wildcard app ID

    All devices and certificates

    Provisioning profiles containing explicit app IDs are created in Xcode

    Production Provisioning Profiles are used for App Store submission

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    71/94

    In-App Purchase content

    New project templates for Macand iOS

    Archive, package, and submit to

    the App Store from Xcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    72/94

    Enabling iCloudentitlements

    Creating aprovisioning

    profile

    Submitting an appto the App Store

    Creating andsubmitting In-AppPurchase content

    1 2 3 4

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    73/94

    Demo

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    74/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    75/94

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    76/94

    iOS application best practices

    Rob MariniXcode

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    77/94

    App Store delta updates

    Delta generated per file from one version to the next

    Store manages which deltas are published

    Generated by the store

    Worst-case scenario is full app download

    Transparent at app development and submission time

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    78/94

    CAUSES

    Small changes generate small deltas

    the whole filea file name

    CAUSES all files in the directorya directory name

    CAUSES everythingthe application name

    If you change the delta includes

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    79/94

    Advantages of beta testing

    Free quality assurance

    Opportunity to rapidly respond to customer feedback

    Direct channel for customers to influence the product

    Identify weak and strong points ahead of release

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    80/94

    Distributing application betas

    Setting up iOS application betas

    Distribution workflow

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    81/94

    Should be able to coexist with shipping version

    Setting up iOS application betas

    Different bundle IDs

    com.mycompany.App com.mycompany.App.beta

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    82/94

    Setting up iOS application betas

    Should be recognizable as a beta

    Different Icons

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    83/94

    Distributing an iOS Application Betas

    Should be easy for testers to obtain and install

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    84/94

    Distributing an iOS Application Betas

    Should be easy for testers to obtain and install

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    85/94

    Goals in distributing a beta

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    86/94

    Goals in distributing a beta

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    87/94

    Goals in distributing a beta

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    88/94

    Goals in distributing a beta

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    89/94

    Demo

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    90/94

    Developer ID

    Fully Integrated Workflow in Xcode for distributing Gatekeepercompatible software

    Mac App Store Distribute directly from Xcode and take advantage of App Store-specifictechnology

    iOS

    Distribute test applications from Xcode

    Minimal change yield smaller deltas

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    91/94

    Michael JurewitzDeveloper Tools [email protected]

    DocumentationTools Workflow Guide for Machttp://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/Introduction/Introduction.html

    Tools Workflow Guide for iOShttp://developer.apple.com/library/ios/DOCUMENTATION/Xcode/Conceptual/ios_development_workflow/index.html

    Apple Developer Forumshttp://devforums.apple.com

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    92/94

    The OS X App Sandbox Nob HillTuesday 10:15AM

    Gatekeeper and Developer ID Nob HillTuesday 11:30AM

    Whats New in iTunes Connect for App DevelopersNob Hill

    Thursday 9:00AM

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    93/94

    Xcode Lab Developer Tools Lab BFriday 9:00AM

  • 7/28/2019 Session 414 - Building, Archiving, And Submitting Your App

    94/94