Distributing to testers and customers
Using the techniques we have learned thus far, we can build an app for iOS simulators and local iOS devices. For this, we do not require permission from Apple, and we do not need to purchase anything except a Mac for our development environment and any iOS devices for our testing.
On the other hand, if we want to distribute an app to other testers or publish it on the App Store, we must take a few more steps, spend a bit more money, and obtain permission from Apple. For details, see Apple's official App Distribution Guide at https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide. Briefly, a typical distribution process involves the following steps:
- Enroll in the iOS Developer Program at https://developer.apple.com/programs/enroll. The cost of membership varies depending on where you live. It is $99 per year in the United States.
- Optionally, use the iOS Provisioning Portal at https://developer.apple.com/account to create the credentials in order to distribute the app. Configure the Xcode project to use the credentials. Alternatively, Xcode may be able to create the credentials automatically even if you do not use the iOS Provisioning Portal.
- Distribute your app to beta testers via Apple's TestFlight tools, which are part of the iTunes Connect tools at https://itunesconnect.apple.com.
- If necessary, revise the app based on beta testers' feedback and retest.
- Submit your app for publication via the iTunes Connect tools.
- If necessary, revise the app based on Apple's feedback and resubmit.
- Receive Apple's blessing and confirm that you are ready to release your app to the App Store. Reap the rewards of app publication!
Publishing an app (or a book!) is a significant undertaking and can be invigorating and humbling at the same time. Publication entails an ongoing responsibility to validate, fix, and promote your work and support your customers. This book's role is to impart valuable technical skills so that you can develop your own publishable projects in the field of computer vision!