Flutter位置行为分析插件sentiance_flutter的使用

Flutter位置行为分析插件sentiance_flutter的使用

本Flutter插件是围绕我们的Android SDKs构建的。

免责声明

此插件仅适用于Android平台。

入门指南

本Flutter插件是围绕我们的Android SDKs构建的。

以下文档仅专注于围绕我们原生Android SDKs的封装。要了解有关SDK及其在项目中的集成方式的更多信息,请参阅以下文档:

Android:

https://docs.sentiance.com/sdk/changelog/android

前置条件

安装

在项目的android/src/res/AndroidManifest.xml文件中添加Geo Location API密钥:

<meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value= "GOOGLE_API_KEY"/>

该插件可在Pub上找到:https://pub.dev/packages/sentiance_flutter

在应用的pubspec.yaml文件中添加以下依赖项:

dependencies:
  sentiance_flutter:
    git:
      url: <Package url>
      branch: master

注意:确保您的应用的最低API级别为19或更高。

在项目的根目录下运行flutter packages get命令。

使用方法

示例代码可以在example/lib/main.dart中找到。

导入包

import 'package:sentiance_flutter/sentiance_flutter.dart';

创建Sentiance实例

await SentianceFlutter.initialiseSentiance();

属性名称

initialiseSentiance方法中使用的属性名称如下表所示:

属性名称 描述
token 您的Sentiance账户的独特标识符。
sentianceSecret 由Sentiance为您账户生成的秘密密钥。
appId 每个设备的独特标识符。
crashDetectionUrl 存储有关崩溃的信息。
mobileHealthUrl 存储有关移动健康的信息。

获取移动健康数据

await SentianceFlutter.getMobileHealthData;

停止Sentiance

await SentianceFlutter.stopSentianceSDK;

示例代码

以下是完整的示例代码:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:sentiance_flutter/sentiance_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: _getPaymentMethodOption(context),
      ),
    );
  }

  String token = // 我们从应用程序中获取的令牌
      "TOKEN";
  String sentianceSecret = "SECRET"; // 常量
  String appId = "APPLICATION ID"; // 常量
  String userLinkUrl = "USER LINKING URL"; // 常量
  String crashDetectionUrl = "CRASH DETECTION URL"; // 常量
  String mobileHealthUrl = "MOBILE HEALTH URL"; // 常量

  // 用于支付选项
  Widget _getPaymentMethodOption(BuildContext context) {
    return Container(
      alignment: Alignment.center,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: () async {
              await SentianceFlutter.initialiseSentiance(
                  token: token,
                  sentianceSecret: sentianceSecret,
                  appId: appId,
                  userLinkUrl: userLinkUrl,
                  crashDetectionUrl: crashDetectionUrl,
                  mobileHealthUrl: mobileHealthUrl);
            },
            child: const Text(
              "初始化SDK",
              style: TextStyle(
                color: Colors.white,
                fontSize: 16.0,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
          ElevatedButton(
            onPressed: () async {
              MobileHealthData data = await SentianceFlutter.getMobileHealthData;
              if (kDebugMode) {
                print(data.androidsdkVersion);
              }
            },
            child: const Text("获取移动健康数据",
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 16.0,
                  fontWeight: FontWeight.bold,
                )),
          ),
          ElevatedButton(
            onPressed: () async {
              await SentianceFlutter.stopSentianceSDK;
            },
            child: const Text(
              "停止SDK",
              style: TextStyle(
                color: Colors.white,
                fontSize: 16.0,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter位置行为分析插件sentiance_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter位置行为分析插件sentiance_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


sentiance_flutter 是一个用于在 Flutter 应用中集成 Sentiance SDK 的插件。Sentiance SDK 是一个位置行为分析工具,可以帮助开发者了解用户的行为模式、出行方式、停留点等信息。通过 sentiance_flutter,你可以在 Flutter 应用中轻松地使用 Sentiance SDK 的功能。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 sentiance_flutter 插件的依赖:

dependencies:
  sentiance_flutter: ^latest_version

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

2. 初始化 Sentiance SDK

在使用 Sentiance SDK 之前,你需要对其进行初始化。通常,你可以在 main.dart 文件中的 main 函数中进行初始化。

import 'package:sentiance_flutter/sentiance_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Initialize Sentiance SDK
  await SentianceFlutter.initialize(
    appId: 'YOUR_APP_ID',
    appSecret: 'YOUR_APP_SECRET',
    launchOptions: LaunchOptions(
      backgroundLocationPermissionDescription: 'We need your location to analyze your behavior.',
      shouldRequestMotionPermission: true,
    ),
  );
  
  runApp(MyApp());
}

3. 启动 Sentiance SDK

初始化完成后,你可以启动 Sentiance SDK 来开始收集数据。

await SentianceFlutter.start();

4. 监听事件

Sentiance SDK 提供了多种事件,你可以监听这些事件来获取用户的行为数据。例如,你可以监听用户的状态变化、出行事件、停留点等。

SentianceFlutter.onUserActivityUpdate.listen((event) {
  print('User activity update: $event');
});

SentianceFlutter.onTripTimeout.listen((event) {
  print('Trip timeout: $event');
});

SentianceFlutter.onTripDetected.listen((event) {
  print('Trip detected: $event');
});

5. 获取用户状态

你可以通过 getUserStatus 方法获取当前用户的状态。

final userStatus = await SentianceFlutter.getUserStatus();
print('User status: $userStatus');

6. 停止 Sentiance SDK

如果你需要停止 Sentiance SDK 的数据收集,可以调用 stop 方法。

await SentianceFlutter.stop();

7. 处理权限

Sentiance SDK 需要获取一些权限,例如位置权限和运动传感器权限。你需要在应用中处理这些权限的请求。

import 'package:permission_handler/permission_handler.dart';

Future<void> requestPermissions() async {
  final status = await Permission.locationWhenInUse.request();
  if (status.isGranted) {
    print('Location permission granted');
  } else {
    print('Location permission denied');
  }
  
  final motionStatus = await Permission.activityRecognition.request();
  if (motionStatus.isGranted) {
    print('Motion permission granted');
  } else {
    print('Motion permission denied');
  }
}

8. 调试与日志

你可以启用 Sentiance SDK 的调试模式来查看详细的日志信息。

await SentianceFlutter.setLogLevel(LogLevel.debug);

9. 处理错误

在使用 Sentiance SDK 时,可能会遇到一些错误。你可以通过 onError 方法来监听错误事件。

SentianceFlutter.onError.listen((error) {
  print('Error: $error');
});

10. 示例代码

以下是一个简单的示例,展示了如何在 Flutter 应用中使用 sentiance_flutter 插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await SentianceFlutter.initialize(
    appId: 'YOUR_APP_ID',
    appSecret: 'YOUR_APP_SECRET',
    launchOptions: LaunchOptions(
      backgroundLocationPermissionDescription: 'We need your location to analyze your behavior.',
      shouldRequestMotionPermission: true,
    ),
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sentiance Flutter Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  await SentianceFlutter.start();
                  print('Sentiance SDK started');
                },
                child: Text('Start Sentiance'),
              ),
              ElevatedButton(
                onPressed: () async {
                  final userStatus = await SentianceFlutter.getUserStatus();
                  print('User status: $userStatus');
                },
                child: Text('Get User Status'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部