background_location_tracker

Creator: coderz1093

Last updated:

Add to Cart

Description:

background location tracker

background_location_tracker #
A new Flutter plugin that allows you to track the background location for Android & iOS



Android Config #
Update compile sdk #
Compile sdk should be at 29 at least.
android {
...
compileSdkVersion 29
...

defaultConfig {
...
targetSdkVersion 29
...
}
...
}
copied to clipboard
iOS Configuration #
Update Info.plist #
Add the correct permission descriptions
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Your description why you should use NSLocationAlwaysAndWhenInUseUsageDescription</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Your description why you should use NSLocationAlwaysAndWhenInUseUsageDescription</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your description why you should use NSLocationAlwaysAndWhenInUseUsageDescription</string>
copied to clipboard
Add the background location updates in xcode
Or add the info to the Info.plist
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
copied to clipboard
Update the AppDelegate #
Make sure you call the setPluginRegistrantCallback so other plugins can be accessed in the background.
import UIKit
import Flutter
import background_location_tracker

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GeneratedPluginRegistrant.register(with: self)

BackgroundLocationTrackerPlugin.setPluginRegistrantCallback { registry in
GeneratedPluginRegistrant.register(with: registry)
}

return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
copied to clipboard
Flutter implementation #
Make sure you set the @pragma('vm:entry-point') to make sure you can find the callback in release.
@pragma('vm:entry-point')
void backgroundCallback() {
BackgroundLocationTrackerManager.handleBackgroundUpdated(
(data) async => Repo().update(data),
);
}

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await BackgroundLocationTrackerManager.initialize(
backgroundCallback,
config: const BackgroundLocationTrackerConfig(
loggingEnabled: true,
androidConfig: AndroidConfig(
notificationIcon: 'explore',
trackingInterval: Duration(seconds: 4),
distanceFilterMeters: null,
),
iOSConfig: IOSConfig(
activityType: ActivityType.FITNESS,
distanceFilterMeters: null,
restartAfterKill: true,
),
),
);

runApp(MyApp());
}

Future startLocationTracking() async {
await BackgroundLocationTrackerManager.startTracking();
}

Future stopLocationTracking() async {
await BackgroundLocationTrackerManager.stopTracking();
}

copied to clipboard
FAQ: #
I get a Unhandled Exception: MissingPluginException(No implementation found for method .... on channel ...)
This is mostly caused by a misconfiguration of the plugin:
Android Pre v2 embedding: make sure the plugin registrant callback is set
Android v2 embedding: Log a new github issues. This
iOS: make sure the plugin registrant callback is set
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.