nexo/apps/client
2026-05-26 20:19:04 +09:00
..
android Initial nexo monorepo migration 2026-05-26 10:42:29 +09:00
integration_test Update client and messaging_flutter files 2026-05-26 18:14:10 +09:00
ios refactor: rename mattermost_push_plugin to nexo_messaging package and update branding 2026-05-26 20:19:04 +09:00
lib Update client and messaging_flutter files 2026-05-26 18:14:10 +09:00
macos refactor: rename mattermost_push_plugin to nexo_messaging package and update branding 2026-05-26 20:19:04 +09:00
test Update client and messaging_flutter files 2026-05-26 18:14:10 +09:00
.gitignore Initial nexo monorepo migration 2026-05-26 10:42:29 +09:00
analysis_options.yaml Initial nexo monorepo migration 2026-05-26 10:42:29 +09:00
pubspec.lock Update client and messaging_flutter files 2026-05-26 18:14:10 +09:00
pubspec.yaml Update client and messaging_flutter files 2026-05-26 18:14:10 +09:00
README.md refactor: rename mattermost_push_plugin to nexo_messaging package and update branding 2026-05-26 20:19:04 +09:00

nexo_client

Flutter client and integration test host for the Nexo messaging runtime.

Purpose

This app is the workspace client harness. Keep it small and focused on proving the messaging/notification package contract:

  • plugin registration in a real Flutter application
  • method-channel calls from Dart to the native plugin
  • event-channel delivery from native code to Dart
  • notification-open routing callbacks
  • Android manifest merge behavior
  • manual Firebase FCM and nexo server ACK smoke testing

Product-specific UI should stay small until Nexo's messaging surface is ready. This app should keep the minimum surface needed to prove package integration.

Structure

apps/client/
  lib/                    # Small harness UI
  test/                   # Widget tests for the harness
  integration_test/       # Device/emulator plugin integration tests
  android/                # Android app used to host the plugin
  ios/                    # iOS host scaffold
  macos/                  # macOS host scaffold

Running The App

Install dependencies:

flutter pub get

Run on a connected device or emulator:

flutter run

For Android FCM smoke testing, make sure the Android app has the required Firebase configuration, including android/app/google-services.json.

Verification

The integration test uses the plugin's test/debug event injection path for method-channel, event-channel, and opened-routing checks. Real FCM delivery, ACK, inline reply, and dismiss behavior remain manual smoke checks.

Run checks from this directory:

flutter analyze
flutter test
flutter test integration_test

Run Android native unit tests from apps/client/android:

./gradlew testDebugUnitTest

Android Gradle tests require a configured Android SDK through ANDROID_HOME or apps/client/android/local.properties.

When the local machine does not have a usable Android SDK or emulator, use the repository-level remote environment guide: ../../packages/messaging_flutter/docs/android-test-environment.md.

Maintenance Rules

  • Keep the app thin.
  • Prefer deterministic test controls over product-like UI.
  • Do not add consuming-app business logic here.
  • Add integration tests here when a plugin behavior needs a real Flutter host.
  • Keep manual FCM and server checks documented with the owning module.