Skip to content

Build & publish for iOS

You need a Mac with Xcode and an Apple Developer account (yearly fee). Do this once per app.

  1. Open the app’s ios/Runner.xcworkspace in Xcode.
  2. Runner project → Runner target → Signing & Capabilities: tick Automatically manage signing and choose your Team. Check the Bundle Identifier is yours (Rename & rebrand).
  3. Keep the capabilities already listed:
    • Push Notifications;
    • Sign in with Apple (customer and seller apps);
    • Associated Domains (shared links);
    • Background Modes — Remote notifications, and Location updates in the rider app.
  4. Customer app only: repeat step 2 for the ImageNotification and RapidOrderLiveActivity targets, with the same team.

In the app’s pubspec.yaml: version: 1.0.0+1. Increase the build number (+2, +3 …) for every upload to App Store Connect.

Check baseUrl in lib/app_config.dart is your server (Connect the apps to your server), then:

Terminal window
cd apps/customer
flutter build ipa --release

The archive is in build/ios/archive/ and the upload-ready file in build/ios/ipa/.

App Store Connect → Apps → + → New App: platform iOS, your app name, primary language, the Bundle ID you set in Xcode, and a SKU (any reference, like quickmart-customer).

Either:

  • Transporter (Mac App Store): sign in and drag the .ipa from build/ios/ipa/ → Deliver; or
  • Xcode: Window → Organizer → select the archive → Distribute App → App Store Connect → Upload.

Processing takes 10–30 minutes; you’ll get an email.

  1. App Store Connect → your app → TestFlight: add yourself as an internal tester and install with the TestFlight app. Test sign-in, ordering, payments and notifications on a real phone.
  2. App Store tab → fill in the description, keywords, support and privacy policy URLs, screenshots (6.7” and 6.5” iPhone at least) and the App Privacy questions.
  3. App Review Information: give the reviewer a way to sign in — for phone sign-in, add a test phone number in Firebase (Authentication → Sign-in method → Phone → Phone numbers for testing) and write the number and code in the notes.
  4. Choose the build, then Add for Review → Submit.

Apple Pay is offered at checkout through Stripe, in the customer app:

  1. Apple Developer → Identifiers → + → Merchant IDs → create one, like merchant.com.yourbrand.
  2. In Stripe → Settings → Payment methods → Apple Pay → follow the steps to add the certificate for that merchant ID.
  3. Xcode → customer Runner target → Signing & Capabilities → + Capability → Apple Pay → tick your merchant ID.
  4. Add the merchant ID to apps/customer/lib/app_config.dart, then build as usual:
    static const String applePayMerchantId = 'merchant.com.yourbrand';

With applePayMerchantId left empty, the Apple Pay option simply stays hidden.