Zipkart Zipkart Docs v1.0.0
Step 4 · Mobile Apps

iPhone Release (Xcode & App Store)

Signing, capabilities, sign-in values, the push key and the App Store upload. Do it on a Mac for each app.

45 min

You need a Mac with the latest Xcode and CocoaPods, and an Apple Developer account. The apps support iOS 15.0 and newer.

Install the pods and open Xcode#

cd customer
flutter pub get
cd ios
pod install

Always open ios/Runner.xcworkspace (not .xcodeproj). Repeat for store/ios and driver/ios.

Signing team and bundle ID#

Runner target → Signing & Capabilities. Tick Automatically manage signing, pick your Team, and set your bundle ID. It must match the iOS app in Firebase.

Check the capabilities#

They are already in the project. If one is missing, add it with + Capability.

Capability Customer Store Delivery Boy
Push Notifications ✓ ✓ ✓
Background Modes → Remote notifications ✓ ✓ ✓
Background Modes → Background fetch ✓ ✓ ✓
Background Modes → Location updates ✓

Add the Google and phone sign-in values#

Download GoogleService-Info.plist for your iOS app (Firebase consoleSettingsGeneral). Turn on Google sign-in in Firebase first, or it has no CLIENT_ID. Put these values in ios/Runner/Info.plist:

Info.plist entry Value
GIDClientID CLIENT_ID (ends with .apps.googleusercontent.com)
URL scheme google-sign-in REVERSED_CLIENT_ID (starts with com.googleusercontent.apps.)
URL scheme firebase-phone-auth Your iOS app ID with app- in front and every : changed to -. 1:123456:ios:abc becomes app-1-123456-ios-abc.

The customer app already has these three entries with the demo values: replace them. If riders sign in with Google or phone, copy the same block into the delivery boy app's Info.plist with its own values. The store app needs none.

Upload the push key (APNs)#

Apple Developer → Keys → + → tick Apple Push Notifications service (APNs) → download the .p8 file (only once). Then Firebase consoleSettingsCloud MessagingApple app configuration → Upload for each iOS app, with the Key ID and Team ID. One key works for all three apps.

Change the permission texts#

ios/Runner/Info.plist holds the texts iOS shows when the app asks for location, camera and photos. Write them for your brand. App Review rejects unclear texts. For the delivery boy app, explain background location in the review notes.

Build and upload#

Raise version: in pubspec.yaml, create the app in App Store Connect with the same bundle ID, then:

flutter build ipa --release

Upload build/ios/ipa/*.ipa with Apple's Transporter app, or in Xcode Product → Archive → Distribute App. Test with TestFlight, then submit for review.

Test push on a real iPhone

The Simulator does not receive push notifications. On the phone, trust your developer certificate (Settings → General → VPN & Device Management) and turn on Developer Mode.

Problem Fix
pod install fails pod repo update, then pod install. Still failing? Delete ios/Pods and ios/Podfile.lock and try again.
"No profiles for…" Pick your Team and use your own bundle ID, not com.zipkart.*.
Google sign-in closes at once GIDClientID or the google-sign-in scheme does not match your GoogleService-Info.plist.
No push on iPhone Upload the APNs key for that app in Firebase and test on a real device.