Flutter资产追踪插件nb_asset_tracking_flutter的使用

Flutter资产追踪插件nb_asset_tracking_flutter的使用

简介

Nextbillion.AI 的 Flutter 资产追踪插件旨在帮助开发者将位置追踪功能集成到他们的 Android 或 iOS 应用程序中。该插件支持实时资产追踪,并允许数据上传至 Nextbillion.AI 后端或自定义数据库。

关键特性和功能

  • 创建资产
  • 绑定资产
  • 获取位置信息回调
  • 获取追踪状态回调
  • 启动和停止追踪功能
  • 获取资产详情

开始使用

前提条件

在将 SDK 集成到应用程序之前,请确保开发环境满足以下前提条件:

访问密钥

为了使用 Nextbillion.ai 的 Flutter 资产追踪 SDK,开发者必须获取一个访问密钥,作为访问 SDK 功能的身份验证机制。

平台需求

  • Android: 使用 Flutter 资产追踪 SDK 的最低支持 Android SDK 版本为 API 级别 21(Android 5.0,“棒棒糖”)或更高版本。
  • iOS: 该 SDK 兼容 iOS 11 或更新版本。

Flutter 兼容性

Flutter 资产追踪 SDK 需要 Flutter 版本 3.3.0 或更高版本以确保与 Flutter 框架无缝集成并实现最佳性能。

CocoaPods

对于 iOS 项目,SDK 需要 CocoaPods 版本 1.11.3 或更新版本来有效地管理依赖项,并确保与 iOS 项目的正确集成。

安装

要在项目中使用此库,请在 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  nb_asset_tracking_flutter: ^<version_number>

<version_number> 替换为您所需的库版本。建议检查 Flutter 资产追踪插件以获取最新版本。

所需权限

为了确保 NextBillion.ai 的 Flutter 资产追踪 SDK 正常运行,您需要授予位置权限并在 Android 和 iOS 平台上声明它们。

Android

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
  • ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 权限允许应用访问用户的位置。
  • ACCESS_BACKGROUND_LOCATION 权限允许应用在后台访问用户的位置。
  • FOREGROUND_SERVICE 权限用于后台位置更新和前台服务。
  • INTERNET 权限允许应用访问互联网。

iOS

获取位置访问权限

NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription 键必须在您的 Info.plist 文件中定义,该文件位于 Flutter 项目的 Runner 文件夹中。这些键为用户提供了一个清晰且简洁的解释,说明为什么您的应用需要访问其位置数据。这种主动的方法促进了透明度和信任。

<key>NSLocationWhenInUseUsageDescription</key>
<string>[Your explanation here]</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>[Your explanation here]</string>

替换 [Your explanation here] 为简明但信息丰富的描述,说明为什么您的应用需要访问用户的地理位置数据。此描述应明确传达用户通过授予此访问权限可以得到的价值。

启用后台位置更新

UIBackgroundModes 键必须定义,以便即使您的应用在后台运行时也能启用位置更新。在此键中指定 location 值,表示您的应用打算使用后台位置服务。此外,还包括音频模式以确保您的应用在音频服务活跃时继续接收位置更新。

<key>UIBackgroundModes</key>
<array>
<string>location</string>
<string>audio</string>
</array>

此设置使您的应用即使不在前台也能保持准确的位置数据,从而为基于位置的功能提供更流畅的用户体验。

通过仔细配置这些元素,您可以确保您的应用程序遵守隐私法规,尊重用户偏好,并在使用基于位置的功能时提供最佳体验,无论是在前台还是后台。

使用

1. 导入必要的类

import 'package:nb_asset_tracking_flutter/asset_tracking.dart';

2. 创建 AssetTracking 实例

AssetTracking assetTracking = AssetTracking();

3. 初始化库并传入您的 API 密钥

await assetTracking.initialize(apiKey: '<your_api_key>');

4. 开始使用提供的方法来管理资产、跟踪位置和配置通知

// 创建一个资产
AssetResult<String> assetResult = await assetTracking.createAsset(profile: assetProfile);

// 绑定一个资产
AssetResult<String> bindResult = await assetTracking.bindAsset(customId: '<custom_id>');

// 启动跟踪
await assetTracking.startTracking();

// 获取资产详情
AssetResult<Map> assetDetails = await assetTracking.getAssetDetail();

// 停止跟踪
await assetTracking.stopTracking();

自定义配置

1. 默认配置(可选)

如果想自定义默认设置,可以创建一个默认配置对象:

DefaultConfig defaultConfig = DefaultConfig(); 
await assetTracking.setDefaultConfig(config: defaultConfig);

2. Android 通知配置(可选)

如果需要自定义 Android 通知设置:

AndroidNotificationConfig androidConfig = AndroidNotificationConfig();
await assetTracking.setAndroidNotificationConfig(config: androidConfig);

3. iOS 通知配置(可选)

根据您的需求配置 iOS 通知设置:

IOSNotificationConfig iosConfig = IOSNotificationConfig();
await assetTracking.setIOSNotificationConfig(config: iosConfig);

4. 位置配置(可选)

根据您的喜好调整位置跟踪设置:

LocationConfig locationConfig = LocationConfig();
await assetTracking.setLocationConfig(config: locationConfig);

5. 数据跟踪配置(可选)

如果需要自定义数据跟踪设置:

DataTrackingConfig dataTrackingConfig = DataTrackingConfig();
await assetTracking.setDataTrackingConfig(config: dataTrackingConfig);

事件监听器

注册监听器以接收更新:

class ConcreteTrackingListener implements OnTrackingDataCallBack {
  [@override](/user/override)
  void onLocationSuccess(NBLocation location) {
    print('Location update successful: $location');
    // 处理成功的位置更新逻辑
  }

  [@override](/user/override)
  void onLocationFailure(String message) {
    print('Location update failed: $message');
    // 处理位置更新失败逻辑
  }

  [@override](/user/override)
  void onTrackingStart(String assetId) {
    print('Tracking started for asset: $assetId');
    // 处理跟踪开始逻辑
  }

  [@override](/user/override)
  void onTrackingStop(String assetId) {
    print('Tracking stopped for asset: $assetId');
    // 处理跟踪停止逻辑
  }
}

// 创建具体的监听器实例
ConcreteTrackingListener concreteListener = ConcreteTrackingListener();

// 添加监听器
assetTracking.addDataListener(concreteListener);

// 移除监听器
assetTracking.removeDataListener(concreteListener);

更多关于Flutter资产追踪插件nb_asset_tracking_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter资产追踪插件nb_asset_tracking_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用nb_asset_tracking_flutter插件的详细步骤和代码案例。这个插件通常用于资产追踪功能,可能会涉及到位置跟踪、传感器数据收集等功能。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加nb_asset_tracking_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  nb_asset_tracking_flutter: ^最新版本号 # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Android权限

android/app/src/main/AndroidManifest.xml中添加必要的权限,例如位置权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 其他必要权限 -->

    <!-- 其他配置 -->

</manifest>

3. 请求权限

在Flutter代码中请求位置权限,可以使用permission_handler插件来简化这一过程:

dependencies:
  permission_handler: ^最新版本号 # 请替换为实际的最新版本号

然后在你的主文件中请求权限:

import 'package:permission_handler/permission_handler.dart';
import 'package:nb_asset_tracking_flutter/nb_asset_tracking_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 请求位置权限
  var status = await Permission.locationWhenInUse.status;
  if (!status.isGranted) {
    Map<Permission, PermissionStatus> statuses = await [
      Permission.locationWhenInUse,
      Permission.locationAlways,
    ].request();

    status = statuses[Permission.locationWhenInUse] ?? PermissionStatus.denied;
  }

  if (status.isGranted) {
    runApp(MyApp());
  } else {
    // 处理权限被拒绝的情况
    runApp(MaterialApp(home: Scaffold(body: Center(child: Text('位置权限被拒绝')))));
  }
}

4. 使用nb_asset_tracking_flutter插件

接下来,在你的应用中初始化并使用nb_asset_tracking_flutter插件。以下是一个简单的示例,展示如何开始位置追踪:

import 'package:flutter/material.dart';
import 'package:nb_asset_tracking_flutter/nb_asset_tracking_flutter.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late AssetTrackingClient _assetTrackingClient;

  @override
  void initState() {
    super.initState();
    _initAssetTracking();
  }

  void _initAssetTracking() async {
    _assetTrackingClient = AssetTrackingClient();

    // 配置并开始追踪
    _assetTrackingClient.configure(
      locationInterval: 5000, // 每5秒发送一次位置更新
      // 其他配置参数...
    );

    _assetTrackingClient.startTracking().then((value) {
      print('位置追踪已启动');
    }).catchError((error) {
      print('启动位置追踪失败: $error');
    });

    // 监听位置更新
    _assetTrackingClient.locationStream.listen((location) {
      print('位置更新: $location');
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('资产追踪示例'),
        ),
        body: Center(
          child: Text('正在追踪资产位置...'),
        ),
      ),
    );
  }

  @override
  void dispose() {
    _assetTrackingClient.stopTracking();
    super.dispose();
  }
}

注意事项

  • 请确保你已经阅读并理解了nb_asset_tracking_flutter插件的官方文档,因为不同的配置和API调用可能会根据具体版本有所变化。
  • 在实际项目中,你可能需要处理更多的错误情况和用户交互,例如权限被拒绝时的引导页面。
  • 插件的具体方法和参数请参考官方文档或源码,以获取最新和最准确的信息。

这个示例展示了如何初始化并使用nb_asset_tracking_flutter插件进行资产追踪。根据你的具体需求,你可能需要进一步定制和扩展这个基础示例。

回到顶部