🛒 Bringo

Delivery App

Build iOS

Requires a Mac + Xcode and an Apple Developer account.

Steps

  1. Prepare
    cd delivery_app
    flutter pub get
    cd ios && pod install && cd ..
    open ios/Runner.xcworkspace
  2. Signing Xcode → Runner → Signing & Capabilities → set Team + Bundle Identifier (e.g. com.yourcompany.delivery).
  3. Capabilities Add Push Notifications and Background Modes → Remote notifications (and Location if you use background location).
  4. Keys Add your GoogleService-Info.plist to ios/Runner/; set the iOS Maps key in AppDelegate.swift if the iOS map is used.
  5. Build
    flutter build ipa --release --dart-define=API_BASE=https://your-domain.com
  6. Archive & upload via Xcode (Product → Archive → Distribute) or Transporter.
🔐
This app enforces HTTPS (App Transport Security is strict by default) — good for production. For local testing against an HTTP dev server, add a temporary ATS exception in Info.plist and remove it before release.

What each step is really doing

pod install
Downloads the native iOS dependencies. Re-run it after every flutter pub get that adds or updates a plugin, or the build will fail with missing headers.
Open the .xcworkspace, never the .xcodeproj
The workspace is what links CocoaPods in. Opening the bare project produces "module not found" errors that look unrelated.
Bundle identifier
Must match the id registered in your Apple Developer account and the one in your Firebase iOS app, or push and sign-in silently fail on device.
Team
Selecting a Team is what lets Xcode create provisioning profiles. Without it you cannot install on a physical device or archive.

Common build failures

"Signing for Runner requires a development team"
No Team selected — Runner target → Signing & Capabilities → choose yours.
CocoaPods errors, or a plugin's header is missing
pod repo update && pod install. If it persists, delete Podfile.lock and Pods/, then pod install again.
"Command PhaseScriptExecution failed"
Almost always a stale build. flutter clean, then flutter pub get, then pod install, then build again.
Archive succeeds but upload is rejected for the icon
iOS icons must have no alpha channel. Regenerate with remove_alpha_ios: true — see Change the App Logo.
App installs but push never arrives
The APNs key is not uploaded to Firebase, or the Push capability is missing. Push also never works on the Simulator — test on a real device.

Before you submit to App Review

  • Every NS…UsageDescription string in Info.plist names your brand and explains the real reason — vague strings are a common rejection.
  • Sign In with Apple is offered if you offer Google or Facebook sign-in (Apple requires it).
  • Any temporary App Transport Security exception added for local testing has been removed.
  • A demo account is supplied in App Store Connect so the reviewer can sign in.
👉
Next: Features.