Preparing for App Store
1. Creating App Store Connect Account
Example: Registering for App Store Connect
// Navigate to App Store Connect and register as a developer
// Fill in required information:
// - Legal name
// - Address
// - Tax ID
// - Bank account details
// - Contact information
| Step | Description | Notes |
|---|---|---|
| 1. Visit App Store Connect | Go to https://appstoreconnect.apple.com |
Use Apple ID to sign in |
| 2. Create Developer Account | Complete the registration form with legal and financial details | Requires valid tax ID and bank account |
| 3. Verify Email | Check email for verification link | Must confirm email address to proceed |
| 4. Accept Terms | Review and accept the App Store Connect agreement | Read carefully before accepting |
Note: You must be an individual or company with a valid tax ID to register for App Store Connect.
Warning: Ensure all financial and legal information is accurate to avoid delays in app approval.
2. Preparing App Icons and Screenshots
Example: App Icon Sizes
// App Icon Asset Catalog Entries
// 1024x1024px (for App Store)
// 180x180px (iPhone Spotlight & Settings)
// 167x167px (iPad App)
// 152x152px (iPad Spotlight)
// 120x120px (iPhone Spotlight)
// 80x80px (iPad Settings)
// 76x76px (iPad Spotlight)
// 58x58px (iPhone Settings)
// 40x40px (iPhone Spotlight & Settings)
// 29x29px (iPhone Settings)
| Size (px) | Usage | File Name |
|---|---|---|
| 1024x1024 | App Store | AppIcon-1024.png |
| 180x180 | iPhone Spotlight & Settings | AppIcon-180.png |
| 167x167 | iPad App | AppIcon-167.png |
| 152x152 | iPad Spotlight | AppIcon-152.png |
| 120x120 | iPhone Spotlight | AppIcon-120.png |
| 80x80 | iPad Settings | AppIcon-80.png |
| 76x76 | iPad Spotlight | AppIcon-76.png |
| 58x58 | iPhone Settings | AppIcon-58.png |
| 40x40 | iPhone Spotlight & Settings | AppIcon-40.png |
| 29x29 | iPhone Settings | AppIcon-29.png |
Note: All icons must be in PNG format with no transparency.
Example: Screenshot Requirements
// Screenshot Requirements
// Device: iPhone 14 Pro Max (1292x2796)
// Resolution: 100% scale
// Format: PNG or JPEG (PNG preferred)
// Size: 1292x2796 px
// Orientation: Portrait only
| Device | Resolution (px) | Orientation | Format |
|---|---|---|---|
| iPhone 14 Pro Max | 1292x2796 |
Portrait | PNG or JPEG |
| iPhone 13 Pro Max | 1292x2796 |
Portrait | PNG or JPEG |
| iPhone 12 Pro Max | 1292x2796 |
Portrait | PNG or JPEG |
| iPad Pro (12.9-inch) | 2048x2732 |
Portrait | PNG or JPEG |
| iPad Air (10.9-inch) | 1768x2352 |
Portrait | PNG or JPEG |
Warning: Screenshots must not contain any text or UI elements that are not part of the app's actual interface.
3. Writing App Description and Metadata
| Field | Description | Requirements |
|---|---|---|
| App Name | Primary name of the app as it appears in the App Store | Must be 30 characters or less; cannot contain special characters |
| Subtitle | Short description (up to 30 characters) shown below the app name | Optional; helps with discoverability |
| Description | Full app description (up to 4000 characters) | Must be in English; includes keywords for search |
| Keywords | Comma-separated list of search terms | Up to 100 characters; helps with app discoverability |
| Privacy Policy URL | Link to the app’s privacy policy | Required if app collects user data |
| Support URL | Link to support page or contact form | Recommended for user assistance |
| Marketing URL | Link to marketing page or promotional content | Optional; enhances app presentation |
Example: App Description Formatting
# App Name
This is a powerful app that helps users manage their daily tasks efficiently.
## Features
- Task creation and organization
- Reminder notifications
- Sync across devices
## Privacy Policy
For more information, please visit our [privacy policy](https://example.com/privacy).
Note: App descriptions should be compelling and highlight key features without being too promotional.
Warning: Avoid using phrases like “best app ever” or “most popular,” as they may violate App Store Review Guidelines.
4. Configuring App Privacy Information
Note: Starting with iOS 14, Apple requires apps to declare the data they collect and how it's used.
| Field | Description | Value |
|---|---|---|
| NSPrivacyCollectedDataTypes | Specifies the types of data your app collects | NSPrivacyCollectedDataTypes array with one or more of the following values:
|
| NSPrivacyCollectedDataLinking | Indicates whether the app links collected data to a user identity | YES or NO |
| NSPrivacyAccessedAPITypes | Lists the APIs accessed by your app that may involve privacy data | NSPrivacyAccessedAPITypes array with one or more of the following:
|
| NSPrivacyTracking | Indicates whether the app uses tracking technologies | YES or NO |
| NSPrivacyTrackingParameters | Provides details about tracking parameters if NSPrivacyTracking is YES |
|
Example: App Privacy Manifest Configuration
import Foundation
// In your app's Info.plist, add the following keys:
let privacyManifest = [
"NSPrivacyCollectedDataTypes": ["NSPrivacyCollectedDataTypeAnalytics", "NSPrivacyCollectedDataTypePreciseLocation"],
"NSPrivacyCollectedDataLinking": "YES",
"NSPrivacyAccessedAPITypes": ["NSPrivacyAccessedAPITypeCalendar", "NSPrivacyAccessedAPITypeCamera"],
"NSPrivacyTracking": "YES",
"NSPrivacyTrackingParameters": [
"NSPrivacyTrackingParameterType": "ThirdParty",
"NSPrivacyTrackingParameterDescription": "App uses third-party tracking services"
]
]
Privacy Manifest Requirements
- Every app that collects data or accesses privacy-sensitive APIs must include a
PrivacyInfo.xcprivacyfile - Include all data types collected and APIs accessed
- Declare tracking behavior clearly
5. Creating App Store Provisioning Profile
Example: Xcode App Store Provisioning Profile Setup
// In Xcode, navigate to:
// Xcode > Preferences > Accounts
// Select your Apple ID and click "Manage Certificates"
// Click the "+" button to add a new provisioning profile
// Choose "App Store" as the distribution method
| Profile Type | Description | Usage |
|---|---|---|
| App Store | Used for distributing apps to the App Store | Required for App Store submission |
| Development | Used for testing on physical devices | For internal testing and development |
| Ad Hoc | Used for distributing apps to specific devices | For beta testing with a limited set of devices |
Note: The App Store provisioning profile must be created in the Apple Developer portal and downloaded to your local machine before uploading to App Store Connect.
Warning: Ensure that the App Store provisioning profile matches the bundle identifier of your app.
Steps to Create App Store Provisioning Profile
- Log in to the Apple Developer portal
- Navigate to Certificates, Identifiers & Profiles
- Select "Provisioning Profiles" and click the "+" button
- Choose "App Store" as the distribution method
- Select your App ID and certificate
- Download the provisioning profile to your local machine
6. Archiving App for Distribution
| Step | Description | Action |
|---|---|---|
| 1. Configure Build Settings | Set the build configuration to Release mode | Build Configuration = Release |
| 2. Set Deployment Target | Ensure deployment target matches App Store requirements | Deployment Target = iOS 12.0 |
| 3. Code Signing | Assign valid provisioning profile and certificate | Code Signing Identity = iPhone Distribution: <Developer Name> |
| 4. Archive App | Use Xcode to archive the project | Xcode > Product > Archive |
Example: Archive Command via Terminal
xcodebuild -scheme MyScheme -configuration Release archive -archivePath /path/to/MyApp.xcarchive
Note: The archive includes all necessary binaries and metadata for App Store submission.
Warning: Ensure all app icons and launch screens meet App Store guidelines before archiving.
7. Uploading Build to App Store Connect
Example: Archive and Upload via Xcode
// 1. Archive the app in Xcode
// Product > Archive
// 2. Validate and upload to App Store Connect
// In Organizer window, select archive > Validate > Upload
| Step | Description | Notes |
|---|---|---|
| Archive | Xcode > Product > Archive |
Creates a .xcarchive file |
| Validate | Organizer > Validate |
Checks for common issues before upload |
| Upload | Organizer > Upload to App Store Connect |
Sends build to Apple's servers |
Note: Ensure your app's
Bundle Identifier matches the one registered in App Store Connect.
Warning: Builds must be uploaded using the same Apple ID used to register the app in App Store Connect.
8. Managing App Versions and Builds
| Field | Description | Value |
|---|---|---|
| CFBundleShortVersionString | Marketing version shown to users | 1.2.0 |
| CFBundleVersion | Build number incremented for each release | 12345 |
Example: Setting Version in Info.plist
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>12345</string>
Note:
CFBundleShortVersionString is what users see in the App Store, while CFBundleVersion must be incremented for each submission.
9. Submitting App for Review
| Step | Description | Details |
|---|---|---|
| 1. Prepare App Store Connect | Set up app metadata and build | Upload build, fill in app information, screenshots, and descriptions in App Store Connect. |
| 2. Review App Information | Verify all app details | Check app name, description, keywords, category, and support URL for accuracy. |
| 3. Submit for Review | Initiate review process | Click "Submit for Review" in App Store Connect after confirming all details are correct. |
Example: App Store Connect Submission
#!/bin/bash
# Example script to upload build using Transporter
xcrun altool --validate-app -f <path-to-build>.ipa -t ios --apiKey <API-Key> --apiIssuerId <Issuer-ID>
xcrun altool --upload-app -f <path-to-build>.ipa -t ios --apiKey <API-Key> --apiIssuerId <Issuer-ID>
Note: Ensure your app meets all App Store Review Guidelines before submission.
Warning: Once submitted, you cannot make changes to the app's metadata or binary. Make sure everything is correct before submitting.
10. Handling App Review Feedback
| Feedback Type | Description | Action Required |
|---|---|---|
| Rejection Reason | App rejected due to policy violations or technical issues | Review rejection notes and address all issues before resubmitting |
| Request for Information | App requires additional details or clarification from developer | Provide requested information within 24 hours to avoid delay |
| Guideline Violation | App does not comply with App Store Review Guidelines | Fix the violation and resubmit for review |
Example: Resubmitting After Rejection
import Foundation
// After addressing feedback, resubmit app using Xcode or Transporter
func resubmitApp() {
print("App updated and ready for resubmission")
// Ensure all metadata is correct
// Submit via App Store Connect or Xcode
}
Note: Apple provides detailed feedback in App Store Connect. Address all issues before resubmitting to avoid further delays.
11. Managing App Updates and Releases
| Step | Action | Description |
|---|---|---|
| 1 | Archive |
Archive your app in Xcode to prepare for submission. |
| 2 | Validate |
Validate the archive before uploading to App Store Connect. |
| 3 | Upload |
Upload the validated archive to App Store Connect. |
| 4 | Release |
Submit the app for review or release it manually. |
Example: Archive and Upload via Terminal
xcodebuild -workspace MyApp.xcworkspace -scheme MyApp archive -archivePath /tmp/MyApp.xcarchive
xcodebuild -exportArchive -archivePath /tmp/MyApp.xcarchive -exportPath /tmp/MyApp -exportFormat ipa
Note: Ensure your app's
CFBundleVersion is incremented for each release.
Warning: App Store Connect requires all apps to be built with the latest SDK.
| Release Type | Description | Status |
|---|---|---|
| Manual Release | App is released after review approval. | NEW |
| Automatic Release | App is released immediately after approval. | DEPRECATED |