Very cumbersome.
The following is Apple’s official explanation:
Preparing to submit to the App Store
Most of your time is spent on programming tasks, but it is important to prepare for App To develop a Store application, you will also need to use Xcode and other tools to perform some management tasks throughout the application's life cycle. The App Store is a regulated store that restricts which apps can be sold. Apple does this to provide users with the best experience possible. For example, apps sold on the App Store must not crash or have other major bugs.
Apple gives you the tools you need to develop, test, and submit your apps to the App Store. To run an application on a device, the device needs to be prepared for development and later testing. You also need to provide information about your app for the App Store to display to customers, and upload screenshots. The app is then submitted to Apple for approval. After the app is approved, you set the date when the app will be available for sale on the App Store. Finally, use Apple's tools to monitor your app's sales, customer reviews, and crash reports. Then repeat the entire process again to submit updates to the application.
If you use certain technologies, such as iCloud storage or in-app purchases, additional configuration and management tasks are required. You'll also perform the tasks of managing a team of developers.
Join the iOS Developer Program
To develop applications for the App Store, you first need to join the iOS Developer Program. By joining the program, you can access the resources and tools you need to manage your account and test apps on your devices.
You will be the primary liaison with Apple for establishing legal terms, creating assets, and promoting your applications. You will be asked whether you are an individual developer or a company developer. If you are a corporate developer, you can add others to your team and grant permissions to some of them to manage accounts. During development, the individuals who need to run the application on the device first join your team.
You will use the following iOS Developer Program online tools to manage your account:
Member Center is used to manage Developer Program accounts, register App IDs and devices, create signing certificates, and create presets Tools for describing files. Member Center is also a gateway to other resources and tools, including iTunes Connect.
iTunes Connect is a marketing and business tool for checking contract status, setting up tax and banking information, obtaining sales and financial reports, and managing app metadata.
You can use Xcode to perform certain Member Center management tasks, and then return to Member Center as needed. These management tasks are very necessary for security and ensure that your application will not be compromised. Release early.
Create a project and configure it for the App Store
When you create an Xcode project from a template, some App Store configuration is already complete. Xcode prompts you for a product name and company identifier. The bundle ID comes from these two properties. For example, in the HelloWorld project, the product name is HelloWorld and the company identifier is edu.self. Therefore, the default bundle ID is edu.self.HelloWorld. Xcode uses sensible defaults for other values ??as well. You should carefully consider which template to use to create your application and what settings to use to configure your project; starting with the right template can help speed up the development process.
If you want to change these settings later, or use iCloud storage, you can find most settings, including enabling entitlements, in the Target Summary pane in Xcode. For example, to pass the verification test, you need to set the application icon and splash screen, which appear under "iPhone/iPod Deployment Info" on the "Summary" panel. These images are used to represent your app in the App Store.
Preparing your device for development
During development, in order to run applications on a device, the device must be connected to your Mac, have development capabilities enabled, and be recognized by Apple. All you need to do is provide some information about the app, yourself, and your device.
You create a signing certificate called a development certificate to identify yourself. All of this information goes into the development profile, which is ultimately installed on the device and allows the application to open.
You can use the Devices manager in Xcode to provision devices for development by using the default App ID and iOS Team Provisioning Profile that Xcode creates for you. (However, if you use iCloud storage, push notifications, in-app purchases, or Game Center, you will need to create a dedicated preset profile.)
Refreshing presets in the Devices manager for the first time When you describe your file, Xcode creates your signing certificate. Xcode creates development and distribution certificates on your behalf. (The distribution certificate is required later when testing and submitting your app to the App Store.)
The iOS Team Provisioning Profile lets you start running your app on devices right away. When you first add a device to your account, Xcode creates an iOS team provisioning profile using the default App ID, device ID, and your development certificates. Simply connect the device to your Mac and click the Use for Development button to add the device to the iOS team profile. Xcode then automatically installs this profile on the connected device to your Mac. Xcode also updates this provisioning profile when it prepares a new device for development.
When you build an application, you sign the code using a signing certificate that is included in the provisioning description file to be used. In the Xcode project editor, use the Code Signing Identity build settings pop-up menu to set Code Signing Identity to the developer certificate included in the iOS team provisioning profile.
After you have prepared your device for development, you can tell Xcode to launch your application on the device. This is done by changing the run destination settings in the Scheme pop-up menu before building the application. When you connect a device with a valid provisioning profile to your Mac, the device name, and the version of iOS it's running, appear as options in the destination Scheme pop-up menu. Choose Product > Edit Scheme to open the scheme editor. After you have prepared your device for development, you can tell Xcode to launch your application on the device. This is done by changing the run destination settings in the Scheme pop-up menu before building the application. When you connect a device with a valid provisioning profile to your Mac, the device name, and the version of iOS it's running, appear as options in the destination Scheme pop-up menu. Choose Product > Edit Scheme to open the scheme editor.
Test your app on multiple devices and multiple iOS versions
You should make a plan to rigorously test your app on a variety of devices and iOS versions. It's not enough to just use an emulator and test your application on a device that's intended for development. The simulator cannot run all threads running on the device, and using Xcode to launch the application on the device will disable some watchdog timers. At a minimum, you should test your application on every device you can find. Ideally, test your app on all devices and iOS versions you intend to support.
This is done by creating a special distribution provisioning profile called an adhoc provisioning profile and sending it to the tester along with the application. Temporary provisioning profiles do not require adding testers to your team, creating signing certificates, or using Xcode to run the application. Application testers simply install the application and a temporary provisioning profile on their device to launch the application. Crash reports or logs can then be collected and analyzed from these testers to resolve the issue.
First, collect all device IDs from testers and add them to Member Center. Testers can use iTunes to obtain their device's ID. Using Member Center, you can create a temporary provisioning profile that contains your App ID and these device IDs.
When your app is ready for testing, use Xcode to create an archive and generate an iOS App Store package (a file with a .ipa file extension).
In the Archives manager, select the archive, click the Distribute button, then click the Save for Enterprise or Ad-Hoc Deployment option to create the package. When you create a package, you sign the archive with the distribution certificate in the temporary provisioning profile and then distribute the package to testers. When your app is ready for testing, use Xcode to create an archive and generate an iOS App Store package (a file with a .ipa file extension). In the Archives manager, select the archive, click the Distribute button, then click the Save for Enterprise or Ad-Hoc Deployment option to create the package. When you create a package, you sign the archive with the distribution certificate in the temporary provisioning profile and then distribute the package to testers.
Testers use iTunes to install provisioning profiles and applications on their devices. When an app crashes on a device, iOS creates a record of the event. The next time the tester connects their device to iTunes, iTunes downloads these records (called "crash logs") to the tester's Mac. Testers should send these crash logs to you.
Configuring application data in iTunes Connect
When an application is sold in the App Store, the store will display a lot of information about the application, including name, description, icon, screenshot and Your company’s contact information. To provide this information, log in to iTunes Connect, create a record for the app, and fill out some forms. Records in iTunes Connect include a Bundle ID column; the value entered in this column must exactly match the app's Bundle ID. The application name and version also need to match the Xcode project configuration. Illustrations need to be uploaded to the App Store to pass validation tests, and the App Store uses them to showcase your app to customers. The app record status should be at least "Waiting for Upload" before submitting the app to the App Store.
Typically, iTunes Connect app records are created later in the development process because of time constraints between record creation and application submission. However, some Apple technologies, including Game Center and in-app purchases, require that iTunes Connect records be created earlier. For example, for in-app purchases, you need to create an application record to add the details of the item you want to sell. This content needs to be created before the development process is complete so that it can be used to test the code added to implement in-app purchases.
Distributing an App to the App Store
Submitting an app to the App Store requires many steps and several tools. First log into iTunes Connect and change the status of the application record to "Waiting for Upload" or something similar. Then use Member Center to create a distribution certificate and distribution provisioning profile. Use Xcode to create, verify, and submit archives to the App Store. Once your app is approved, use iTunes Connect to set a date for customers to purchase the app.
When your app is ready for release, you need to create a distribution provisioning profile, selecting App Store as the distribution method. When creating this type of provisioning profile, simply select an App ID and not any signing certificate or device ID.