- iOS 16.1+ (Required for Live Activities)
- Xcode 14+
- Apple Developer Account (Required for background location and Live Activities)
- Physical iOS Device (Live Activities don't work on simulator)
open ios/Runner.xcworkspace- Bundle Identifier:
com.livespotalert.app(or your preferred identifier) - Version: 1.0.0
- Build: 1
- Deployment Target: 16.1
- Supported Device Families: iPhone
- Enable Automatic Signing (or configure manual signing)
- Add Required Capabilities:
- ✅ Background Modes
- Location updates
- Background processing
- Background fetch
- ✅ Push Notifications (Required for Live Activities)
- ✅ Live Activities (iOS 16.1+)
- ✅ WidgetKit Extension (For Live Activities UI)
- ✅ Background Modes
The entitlements file has been created at ios/Runner/LiveSpotAlert.entitlements.
Link it in Xcode:
- Select Runner target
- Build Settings → Code Signing Entitlements
- Set path to:
Runner/LiveSpotAlert.entitlements
The following permissions and configurations have been added to Info.plist:
NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationTemporaryUsageDescriptionDictionary
UIBackgroundModes: location, background-processing, fetch
NSSupportsLiveActivities: trueMinimumOSVersion: 16.1
- Go to Certificates, Identifiers & Profiles
- Select your App ID
- Enable Required Services:
- ✅ Push Notifications
- ✅ Background Modes
- ✅ Live Activities
- Create Apple Push Notification service SSL (Sandbox & Production)
- Download and install the certificate
- Update
aps-environmentin entitlements for production:production
- Create provisioning profile with all required capabilities
- Download and install in Xcode
- Select the profile in project settings
- Always Location Permission: Required for background geofencing
- Precise Location: Needed for accurate geofence triggering
- Background App Refresh: Must be enabled in device settings
- Physical Device: Live Activities don't work on simulator
- iOS 16.1+: Minimum requirement
- Focus Modes: Test with different Focus mode configurations
// flutter_background_geolocation config (already implemented)
desiredAccuracy: high // Only when needed
distanceFilter: 10.0 // Reduce location updates
stopTimeout: 1 // Quick stop detection- Clear explanations in permission dialogs
- Minimal data collection - only location for geofencing
- User control - easy to disable/enable geofences
- 4KB maximum data payload
- Static images only (no animations)
- System-controlled appearance timing
- Limited interaction (tap to open app)
- Clear, concise information display
- High contrast for readability
- Consistent with app branding
- Accessible text and imagery
- Test on multiple devices (different iOS versions)
- Verify background location works correctly
- Test Live Activities trigger properly
- Check battery usage is reasonable
- Test permission flows are user-friendly
- Validate geofence accuracy in real-world scenarios
- Test edge cases (airplane mode, low battery, etc.)
- Location Usage Justification: Clear explanation of why always-location is needed
- Demo Video: Show geofencing and Live Activities working
- Privacy Policy: Detail location data usage and retention
- App Description: Clearly explain location-based features
- Change aps-environment to
productionin entitlements - Update bundle ID for production
- Configure production push certificates
- Test with production provisioning profile
Error: Location permission denied
Solution: Check Info.plist descriptions are user-friendly and descriptive
Error: Geofences not triggering in background
Solution: Verify "Always" location permission is granted, not just "While Using App"
Error: Live Activities don't show up
Solution: Check iOS version (16.1+), device (not simulator), and Focus mode settings
Error: Code signing issues
Solution: Ensure provisioning profile includes all required capabilities
- Battery usage (should be reasonable for location app)
- Location accuracy (geofence trigger reliability)
- Background crashes (monitor crash reports)
- Permission grant rates (user experience indicator)
Consider adding analytics to track:
- Geofence trigger success rate
- Live Activities engagement
- User permission choices
- Feature usage patterns
- Explain benefits before requesting permissions
- Request permissions in context (when creating first geofence)
- Provide fallbacks if permissions denied
- Guide users to Settings if permissions need changing
- Easy access to permission settings
- Clear indicators of current permission status
- Helpful instructions for changing permissions in iOS Settings
- Graceful degradation when permissions are limited
- Configure Xcode project with the settings above
- Test on physical device with real geofences
- Validate Live Activities work as expected
- Prepare for App Store submission with required documentation
- Monitor performance and user feedback after release
For questions or issues, refer to: