Overview
This guide covers building iOS apps and deploying the DPM Delivery Mobile app to TestFlight and the Apple App Store.Prerequisites
- macOS with Xcode installed (latest stable version)
- Apple Developer Account ($99/year)
- CocoaPods installed
- Valid certificates and provisioning profiles
Build Configuration
App Information
- Bundle Identifier:
com.felix-asante.dpm-parcel-delivery-app - App Name: dpm-parcel-delivery-app
- Version: 1.0.0
- Scheme:
dpmparceldeliveryapp
Device Support
- Orientation: Portrait
- Tablet Support: Enabled (supports iPad)
- Interface Style: Automatic (supports dark mode)
Architecture
- New Architecture: Enabled (
newArchEnabled: true) - Uses React Native’s new architecture for improved performance
Xcode Setup
Open Project in Xcode
-
Navigate to the iOS directory:
-
Install CocoaPods dependencies:
-
Open the workspace:
Configure Signing
- Select your project in Xcode navigator
- Select the target under “Targets”
- Go to “Signing & Capabilities” tab
- Select your development team
- Ensure “Automatically manage signing” is enabled
- Verify bundle identifier:
com.felix-asante.dpm-parcel-delivery-app
Certificate Management
Development Certificates
-
Create Certificate Signing Request (CSR)
- Open Keychain Access
- Go to Keychain Access > Certificate Assistant > Request a Certificate
- Enter your email and name
- Save CSR to disk
-
Generate Development Certificate
- Go to Apple Developer Portal
- Click ”+” to create new certificate
- Select “iOS App Development”
- Upload your CSR
- Download and install the certificate
Distribution Certificates
- Follow the same CSR process
- Select “iOS Distribution (App Store and Ad Hoc)”
- Download and install in Keychain Access
Provisioning Profiles
Development Profile:- Go to Profiles in Developer Portal
- Create new “iOS App Development” profile
- Select your App ID:
com.felix-asante.dpm-parcel-delivery-app - Select your development certificate
- Select test devices
- Download and install
- Create new “App Store” profile
- Select your App ID and distribution certificate
- Download and install
Automatic Signing vs Manual
Automatic (Recommended for Development):- Xcode manages certificates and profiles
- Easier for individual developers
- Enable in Xcode > Signing & Capabilities
- Full control over certificates
- Required for automated builds
- Configure in Xcode or use
xcodebuild
Building for iOS
Development Build
Run on simulator:Build for Device
- Connect your iOS device via USB
- Select your device in Xcode
- Click “Run” (Cmd+R)
Create Archive
- In Xcode, select “Any iOS Device” as the destination
- Go to Product > Archive
- Wait for the archive to complete
- Xcode Organizer will open automatically
TestFlight Deployment
Prepare for TestFlight
-
Create App in App Store Connect
- Go to App Store Connect
- Click ”+” to create new app
- Enter app information:
- Bundle ID:
com.felix-asante.dpm-parcel-delivery-app - App Name: DPM Parcel Delivery
- Primary Language
- SKU (unique identifier)
- Bundle ID:
-
Configure App Information
- App icon (1024x1024, no transparency)
- Screenshots for all device sizes
- Description and keywords
- Support URL and marketing URL
- Privacy policy URL
Upload to TestFlight
Via Xcode:- Open Xcode Organizer (Window > Organizer)
- Select your archive
- Click “Distribute App”
- Select “App Store Connect”
- Choose “Upload”
- Select distribution options:
- Include bitcode: Yes (if required)
- Upload symbols: Yes
- Manage version and build number: Automatic
- Click “Upload”
- Export IPA from Xcode
- Open Transporter app
- Drag and drop your IPA
- Click “Deliver”
Add Testers
- Go to TestFlight tab in App Store Connect
- Wait for build processing (10-15 minutes)
- Add internal testers (up to 100)
- Add external testers (up to 10,000)
- Testers receive email with TestFlight link
External Testing
- Create a test group
- Add build to the group
- Submit for Beta App Review (required for external testers)
- Add what to test and contact information
- Wait for approval (usually 24-48 hours)
App Store Submission
Prepare for Submission
-
App Information
- Complete all metadata fields
- Add localized descriptions
- Set pricing and availability
-
App Privacy
- Complete privacy questionnaire
- Describe data collection practices
- Add privacy policy URL
-
Screenshots and Previews
- iPhone 6.7” display (required)
- iPhone 6.5” display (required)
- iPad Pro 12.9” (if supporting iPad)
- Optional: App preview videos
-
Version Information
- What’s new in this version
- Copyright information
- Support URL
Submit for Review
- Select your TestFlight build for release
- Complete all sections:
- App Information
- Pricing and Availability
- App Privacy
- Prepare for Submission
- Click “Submit for Review”
- Review status changes:
- Waiting for Review
- In Review
- Pending Developer Release / Ready for Sale
- Rejected (if issues found)
Review Guidelines
Ensure your app complies with App Store Review Guidelines:- App completeness and functionality
- Accurate metadata and screenshots
- Privacy and data handling
- Business model clarity
- Design quality
Building from Command Line
Using xcodebuild
Build for simulator:Using Expo
Build iOS app with EAS:Continuous Integration
GitHub Actions Example
Troubleshooting
Code Signing Errors
“No signing certificate found”:- Install development/distribution certificate in Keychain
- Verify certificate is valid and not expired
- Check certificate is trusted
- Download latest profile from Developer Portal
- Delete derived data:
rm -rf ~/Library/Developer/Xcode/DerivedData/* - Clean build folder in Xcode (Cmd+Shift+K)
Build Failures
Pod install issues:TestFlight Processing Issues
- Verify all required frameworks are included
- Check for missing symbols
- Ensure bitcode is enabled if required
- Review build processing status in App Store Connect
App Store Rejection
- Read rejection reason carefully
- Review App Store Review Guidelines
- Fix issues and resubmit
- Use Resolution Center for clarification
Version Management
Increment Version
Update version inapp.json:
Build Number
Increment build number in Xcode:- Select project > Target > General
- Increase “Build” number
- Keep “Version” in sync with
app.json
Next Steps
- Set up automated deployment with fastlane
- Configure App Store Connect API key for CI/CD
- Implement phased release strategy
- Set up crash reporting (Firebase, Sentry)
- Monitor analytics and user feedback