Platform-Specific Implementation Guide
Platform-Specific Implementation Guide
Section titled “Platform-Specific Implementation Guide”This document describes platform-specific requirements and implementations for Toss.
Accessibility Permissions
Section titled “Accessibility Permissions”macOS requires accessibility permissions for clipboard monitoring. The app must:
- Request accessibility permissions on first launch
- Check permission status before accessing clipboard
- Provide instructions if permissions are denied
- Handle permission denied gracefully
Implementation Status: Basic structure created in permissions_service.dart. Full implementation requires native code integration.
Files:
flutter_app/lib/src/core/services/permissions_service.dartflutter_app/macos/Runner/Info.plist(needsNSAccessibilityUsageDescription)
Windows
Section titled “Windows”Clipboard Format Handling
Section titled “Clipboard Format Handling”Windows supports multiple clipboard formats that need special handling:
- CF_TEXT: ANSI text (legacy)
- CF_UNICODETEXT: Unicode text (preferred)
- CF_HDROP: File list (HDROP)
- CF_DIB: Device-independent bitmap
- CF_BITMAP: Bitmap handle
Implementation Status: Format constants and structure created in windows_formats.rs. Full implementation requires Windows API integration.
Files:
rust_core/src/clipboard/windows_formats.rs
Priority: Handle CF_UNICODETEXT for text, CF_HDROP for files, CF_DIB for images.
Display Server Support
Section titled “Display Server Support”Linux supports both X11 and Wayland, each with different clipboard APIs:
- X11: Uses xcb or Xlib for clipboard access
- Wayland: Uses wl-clipboard or similar protocols
Implementation Status: Detection logic created in linux_display.rs. Full implementation requires both X11 and Wayland backends.
Files:
rust_core/src/clipboard/linux_display.rs
Priority:
- Detect display server (X11 vs Wayland)
- Implement X11 clipboard (xcb)
- Implement Wayland clipboard (wl-clipboard)
- Handle display server switching
Background Limitations
Section titled “Background Limitations”iOS has limited background clipboard access. Options include:
- App Extension: Share extension for clipboard access
- Shortcuts Integration: iOS Shortcuts app integration
- Widget: Quick sync widget
- Foreground Only: Optimize for foreground sync
Implementation Status: Basic structure created in ios_background_service.dart. Full implementation requires native code (Share Extension, Shortcuts handlers, Widget).
Files:
flutter_app/lib/src/core/services/ios_background_service.dartflutter_app/ios/Runner/Info.plist(updated with background modes)- See
docs/IOS_ANDROID_IMPLEMENTATION.mdfor detailed implementation guide
Android
Section titled “Android”Android 10+ Clipboard Restrictions
Section titled “Android 10+ Clipboard Restrictions”Android 10+ limits background clipboard access. Solutions:
- Foreground Service: Persistent foreground service
- Persistent Notification: Required for foreground service
- Workarounds: Handle clipboard access restrictions
Implementation Status: Basic structure created in android_foreground_service.dart. Full implementation requires native Kotlin service and manifest updates.
Files:
flutter_app/lib/src/core/services/android_foreground_service.dartflutter_app/android/app/src/main/AndroidManifest.xml(needs foreground service permissions and service declaration)- See
docs/IOS_ANDROID_IMPLEMENTATION.mdfor detailed implementation guide
Implementation Priority
Section titled “Implementation Priority”- macOS Permissions (#28) - Required for MVP on macOS
- Windows Clipboard Formats (#29) - Required for proper Windows support
- Linux X11/Wayland (#30) - Required for Linux support
- iOS Background (#31) - Nice to have for iOS
- Android 10+ (#32) - Required for Android 10+
Testing
Section titled “Testing”Each platform-specific feature should be tested on the target platform:
- macOS: Test on macOS with accessibility permissions
- Windows: Test on Windows with various clipboard formats
- Linux: Test on both X11 and Wayland environments
- iOS: Test on iOS device with background limitations
- Android: Test on Android 10+ device