搜索插件、代码仓与 APP 分类

GitHub 代码仓Almoullim/background_location

后台位置

适用于 Android 和 iOS 的 Flutter 后台位置插件

后台位置 项目封面
星标
236
复刻
321
最近推送(UTC)
2025年9月6日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

Background Location

A Flutter plugin to get location updates in the background for both Android and iOS (Requires iOS 10.0+). Uses CoreLocation for iOS and FusedLocationProvider for Android

Getting Started

1: Add this to your pubspec.yaml file:

dependencies:
  background_location: ^0.13.0

2: Install packages from the command line:

flutter pub get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

Configuration

For using background_location package you need to add permissions to use location service. Add these permission to your platform.

iOS Platform Permission

in ios/Runner/Info.plist add:

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>[Describe your purpose for using this permission]</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>[Describe your purpose for using this permission]</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>[Describe your purpose for using this permission]</string>
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>location</string>
</array>

Note: You need to describe your purpose for using the permission in to string value. If not, attempts to access the resource fail, and might even cause your app to crash. And when publishing to the App Store, this can cause your app to be rejected by Apple. Refer to Provide a purpose string (Apple Docummentation).

Android Platform Permission

In android/app/src/main/AndroidManifest.xml add:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/> 

How to use

Import the package where you wanna use it.

import 'package:background_location/background_location.dart';

Request permissions from the user. You can use permission_handler for this.

Set the notification title, message and icon (Android only). Use await or .then if you wanna start the location service immediately after because it's an asynchronous method

BackgroundLocation.setAndroidNotification(
  title: "Notification title",
  message: "Notification message",
  icon: "@mipmap/ic_launcher",
);

Set the interval between localizations in milliseconds (Android only). Use await or .then if you wanna start the location service immediately after because it's an asynchronous method

BackgroundLocation.setAndroidConfiguration(1000);

Start the location service. This will also ask the user for permission if not asked previously by another package.

// To ensure that previously started services have been stopped, if desired
BackgroundLocation.stopLocationService();

// Then start the service
BackgroundLocation.startLocationService();

Note: There is currently an open issue (#10) where, if the location service is started multiple times, the location callback will get called repeatedly. This can be worked around by calling BackgroundLocation.stopLocationService(); to stop any previous running services (such as from a previous run of the app) before starting a new one.

Start location service by specifying distanceFilter. Defaults to 0 if not specified

BackgroundLocation.startLocationService(distanceFilter : 10);

You can also force the use of Android LocationManager instead of Google's FusedLocationProvider by setting the forceAndroidLocationManager property to true. If not specified, this defaults to false, which uses FusedLocationProvider if it is available, treating LocationManager as a fallback. This setting has no effect on iOS devices.

BackgroundLocation.startLocationService(forceAndroidLocationManager: true);

getLocationUpdates will triggered whenever the location is updated on the device. Provide a callback function to getLocationUpdates to handle location updates.

BackgroundLocation.getLocationUpdates((location) {
  print(location);
});

location is a Class exposing the following properties.

double latitude;
double longitude;
double altitude;
double bearing;
double accuracy;
double speed;
double time;
bool isMock;

To stop listening to location changes you can execute.

BackgroundLocation.stopLocationService();
Ali Almoullim GitHub avatar
GitHub 作者

Ali Almoullim ↗

Web Developer/Designer

语言KotlinDartSwiftRubyObjective-C

分类

此仓库发布的插件

使用的依赖

依赖清单 3 项

  • flutter{"sdk":"flutter"}
  • flutter_test开发依赖{"sdk":"flutter"}
  • lints开发依赖^5.0.0

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗