Jawal Flutter SDK
Getting Started
Add this to your package's pubspec.yaml file:
dependencies:
jawal_flutter: ^1.0.3
Android
The Package adds this permissions to your Android Manifest:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
iOS
Add the following to your Info.plist file:
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>YOUR_LOCATION_DESCRIPTION</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>YOUR_LOCATION_DESCRIPTION</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>YOUR_LOCATION_DESCRIPTION</string>
If you plan to keep tracking while the app is in background, you need to enable the "Background Modes" capability and check these two options:
- Location updates
- Background fetch
Usage
Initialize the SDK with your API Key:
JawalConfig config = JawalConfig(
apiKey: "YOUR_API_KEY",
userId: "USER_UNIQUE_ID",
userDescription: "USER_DESCRIPTION", // Optional
onInitResult: (InitResultEvent event) {
if(event.isSuceessful) {
/// SDK is initialized successfully
} else {
/// You can get the error message from event.error
print(event.error);
}
},
);
Jawal.init(config);
USER_UNIQUE_ID
: A unique ID for the user, it can be the user ID in your database
USER_DESCRIPTION
: A description for the user, it can be the user name
Location Permissions
You need to request the location permission from the user, the SDK provides a method to request the permission:
PermissionStatus locationStatus = await Jawal.requestLocationPermission();
if(locationStatus.isGranted){
/// Optional: Ask for background location permission if you want to keep tracking while the app is in background
PermissionStatus backgroundStatus = await Jawal.requestBackgroundLocationPermission();
}else if(locationStatus.isPermanentlyDenied) {
/// Permission is permanently denied, you can ask the user to go to the settings and enable the permission
}
Start Tracking
Jawal.startTracking();
Stop Tracking
Jawal.stopTracking();
Listen to Location Updates
Jawal.onLocationChange((LocationChangeEvent event) {
///Do something with the location
});