session 414 - building, archiving, and submitting your app
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