WhatsMine Documentation
Home
  • What is WhatsMine?
  • Feature Tour
  • Requirements
  • Installation
  • Configuration (.env reference)
  • Going Live Checklist
Admin Guide
User Guide
Mobile App
Integrations
  • Architecture
  • REST API v1
  • Production Deployment
  • Frequently Asked Questions
  • Troubleshooting
  • Changelog
Home
  • What is WhatsMine?
  • Feature Tour
  • Requirements
  • Installation
  • Configuration (.env reference)
  • Going Live Checklist
Admin Guide
User Guide
Mobile App
Integrations
  • Architecture
  • REST API v1
  • Production Deployment
  • Frequently Asked Questions
  • Troubleshooting
  • Changelog
  • Mobile App

    • Mobile App — Overview
    • Mobile App — Setup
    • Mobile App — Configuration
    • Mobile App — Usage
    • Mobile App — Publishing & Store Compliance

Mobile App — Setup

Get the WhatsMine Agent app building and running on an emulator or device. The Android & iOS projects are already generated and configured, so this is mostly installing the toolchain and fetching packages.

1. Prerequisites

  • Flutter SDK — Dart >=3.6.0, Flutter >=3.27.0 (the versions pinned in pubspec.yaml).
  • Android — Android Studio + an emulator or a USB device with USB debugging.
  • iOS (Mac only) — Xcode + CocoaPods, and a simulator or device.
  • A running WhatsMine server with the mobile API enabled (this repo). For a first run you can point at the public demo — see Configuration.

Confirm the toolchain is healthy before you start:

flutter doctor

2. Fetch dependencies

cd Chat-Agent-App
flutter pub get

The native projects ship with the package id com.spagreen.whatsmine.chat. What's already wired for you:

  • Android — AndroidManifest.xml with INTERNET + POST_NOTIFICATIONS and url_launcher query intents; app/build.gradle.kts with minSdk 23, multidex and coreLibraryDesugaring (needed by flutter_local_notifications); and a root build.gradle.kts that forces compileSdk 36 on all modules (required by file_picker / image_picker). Verified with flutter build apk --debug ✓.
  • iOS — Info.plist with camera/photo/mic usage strings, display name and tel/mailto query schemes; a privacy manifest at ios/Runner/PrivacyInfo.xcprivacy.

One manual iOS step

In Xcode, add PrivacyInfo.xcprivacy to the Runner target's Copy Bundle Resources so it ships in the build: open ios/Runner.xcworkspace, drag the file into the Runner group, and tick the Runner target.

If you ever re-run flutter create .

Re-apply the staged copies kept in platform/ (the source of truth): platform/android/AndroidManifest.xml, platform/ios/Info.plist.additions.xml and platform/ios/PrivacyInfo.xcprivacy.

3. Point the app at a server

Server URL and Pusher credentials are baked in at build time — there is no in-app server/Pusher screen. Either edit the defaults in lib/src/core/config/app_config.dart, or pass them per build with --dart-define. Full details (and the demo defaults) are in Configuration.

4. Run

# uses the defaults compiled into app_config.dart
flutter run

…or override the server and realtime for this run:

flutter run \
  --dart-define=SERVER_URL=https://your-domain.com \
  --dart-define=PUSHER_KEY=your_pusher_key \
  --dart-define=PUSHER_CLUSTER=mt1

Sign in with an agent account. For the demo server the credentials are client@spagreen.net / 12345678.

5. Sanity checks

flutter analyze            # static analysis / lints
flutter test               # widget + unit tests
flutter build apk --debug  # confirm the Android build wiring

If flutter run connects but login fails, the issue is almost always the server URL or HTTPS/CORS on the backend — jump to Publishing → Troubleshooting and the main Real-time & Push guide.

Last Updated: 6/29/26, 12:25 PM
Prev
Mobile App — Overview
Next
Mobile App — Configuration