Install, connect to your website, set up push messages and publish.
flutter --version) – install guidecd iphone_app
./setup.sh com.yourcompany "Your App Name"
cd ios && pod install && cd ..
The script creates the ios/ folder with your bundle id and app name and applies what the app needs: camera, photo and Face ID texts, iOS 15 as the minimum, and the app icon. Then open ios/Runner.xcworkspace in Xcode, choose your Team under Signing & Capabilities, and run:
flutter run --dart-define=API_BASE=https://dms.yourcompany.com
The app talks to your Smart DMS website through its mobile API (/api/mobile/v1, described in docs/API.md). Nothing has to be switched on in the website.
--dart-define=API_BASE=https://dms.yourcompany.com. It is pre-filled on the sign-in screen.API_BASE out; people type their website address once.https://example.com/dms/main_file.Everyone signs in with the same email and password as on the website (two-factor codes are asked for when switched on). Owners and staff see documents, scanning, approvals and signatures; clients see their documents, uploads and signatures. The super admin uses the website only.
| Screen | What it does |
|---|---|
| Home | What needs attention (approvals, signatures, expiring documents, messages), latest documents, next reminders |
| Documents | Search, filter by category / expiring, open PDFs and pictures, comments, keep a file on the phone, share it. "+" scans paper, turns photos into a PDF or uploads a file |
| Tasks | Approve or reject, sign with a finger (choose page and position), decline with a reason |
| Inbox | Messages from the website; tapping a push message opens the right tab |
| More | Notification settings, fingerprint / face lock, files saved on the phone, signed-in devices, sign out |
GoogleService-Info.plist; drag it into Runner in Xcode (tick "Copy items" and the Runner target).FCM_CREDENTIALS=/path/to/key.json in the website's .env.flutter build ipa --release --dart-define=API_BASE=https://dms.yourcompany.com
Upload the result with Xcode Organizer or the Transporter app, test with TestFlight, then submit for review in App Store Connect. Raise the number after + in pubspec.yaml for every upload. Replace assets/icon.png (1024×1024) and run dart run flutter_launcher_icons to change the icon.
Apple asks for: a privacy-policy address (your website's privacy page), screenshots, descriptions, the data the app handles (account details, documents, camera, push tokens) and a demo login for the reviewer.
| Symptom | Try |
|---|---|
| "The server address does not look right" / "No connection" | Open the address in Safari on the phone first. Apple requires https with a valid certificate. |
pod install fails | cd ios && pod repo update && pod install; make sure ios/Podfile starts with platform :ios, '15.0'. |
| "Signing for Runner requires a development team" | Xcode → Runner → Signing & Capabilities → choose your Team. |
| No push messages | Check the plist, the two capabilities, the APNs key in Firebase, FCM_CREDENTIALS, and the phone's notification permission. |
| Face ID prompt missing | Check NSFaceIDUsageDescription in ios/Runner/Info.plist (the setup script adds it). |