Flutter健康数据访问插件terra_apple_health的使用
Flutter健康数据访问插件terra_apple_health的使用
Terra Flutter Apple Healthkit
该(非官方)插件集成了一个与Terra的Apple SDK交互的桥接器和接口。这使开发者能够构建React Native应用程序,并将用户的Apple Healthkit连接到Terra生态系统。
安装
首先,安装插件:
dart pub add terra_apple_health
使用方法
你可以参考/example
文件夹中的示例来了解如何使用。首先导入插件并创建一个实例:
import 'package:terra_apple_health/terra_apple_health.dart';
...
final terra = TerraAppleHealth(
// 注意:传递你自己的API密钥和开发ID
"terraTestDevID",
"terraTestingAPIKey",
autoFetch: true
);
在向用户展示小部件会话后,如果确定他们希望使用Apple Health进行认证,可以调用TerraApple.auth
,这将对用户进行Terra认证并返回一个Future:
final authResult = await terra.auth();
if (authResult['terra_id'] != null) {
// 获取响应映射中的userID或状态
}
一旦有了用户ID,就可以通过使用TerraApple.initTerra
将设备SDK实例连接到Terra:
terra.initTerra(userId: authResult['terra_id']);
initTerra
将设备连接到Terra。每次用户打开应用时都需要执行此操作(如果SDK未初始化,则无法指示其连接到Terra)。另一方面,auth
仅在首次从您的应用连接用户时需要(在此之后,任何对auth
的调用都将返回为该设备生成的相同用户ID)。
如果设置了autoFetch
为true,当用户打开应用时,每8小时将数据发送到您的webhook。
活动数据会在用户打开应用时发送到您的webhook。你也可以通过调用getter请求数据发送到您的webhook:
terra.getBody(
DateTime(2022, 01, 02),
DateTime.now()
);
terra.getDaily(
DateTime(2022, 01, 02),
DateTime.now()
);
terra.getSleep(
DateTime(2022, 01, 02),
DateTime.now()
);
terra.getActivity(
DateTime(2022, 01, 02),
DateTime.now()
);
最后,你可以使用deauth()
函数和调用Terra deauth API取消用户的认证:
terra.deauth();
完整示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:terra_apple_health/terra_apple_health.dart';
import 'package:terra_apple_health_example/secrets.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)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.medical_services),
onPressed: () async {
final terra = TerraAppleHealth(
// 注意:传递你自己的API密钥和开发ID
terraTestDevID,
terraTestingAPIKey,
);
final authResult = await terra.auth();
if (authResult['terra_id'] != null) {
terra
.initTerra(userId: authResult['terra_id'])
.then((resultMap) {
// 发送示例数据到webhook
terra.getDaily(
DateTime.now().subtract(const Duration(days: 1)),
DateTime.now().add(const Duration(days: 1)));
});
}
}),
appBar: AppBar(
title: const Text('Terra Plugin Demo'),
),
body: const Center(
child: Text('点击按钮以连接'),
),
),
);
}
}
更多关于Flutter健康数据访问插件terra_apple_health的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter健康数据访问插件terra_apple_health的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
terra_apple_health
是一个用于 Flutter 的插件,允许开发者访问 Apple Health 数据。该插件由 Terra 提供,主要用于从 Apple HealthKit 中读取健康数据,并将其传输到 Terra 的 API 或其他后端服务。
以下是使用 terra_apple_health
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 terra_apple_health
插件的依赖:
dependencies:
flutter:
sdk: flutter
terra_apple_health: ^1.0.0 # 使用最新版本
然后运行 flutter pub get
以安装依赖。
2. 配置 iOS 项目
在 iOS 项目中,你需要在 Info.plist
文件中添加 HealthKit 的权限声明:
<key>NSHealthShareUsageDescription</key>
<string>We need access to your health data to provide personalized insights.</string>
<key>NSHealthUpdateUsageDescription</key>
<string>We need access to your health data to provide personalized insights.</string>
3. 初始化插件
在 Flutter 应用中初始化 terra_apple_health
插件。你需要提供 Terra 的 API 密钥和开发者的 ID:
import 'package:terra_apple_health/terra_apple_health.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
TerraAppleHealth terraAppleHealth = TerraAppleHealth();
await terraAppleHealth.init(
devId: 'YOUR_DEV_ID',
apiKey: 'YOUR_API_KEY',
);
runApp(MyApp());
}
4. 请求权限
在访问健康数据之前,你需要请求用户的权限。你可以使用 requestPermissions
方法来请求访问特定类型的健康数据:
await terraAppleHealth.requestPermissions(
types: [
HealthDataType.steps,
HealthDataType.heartRate,
HealthDataType.sleep,
],
);
5. 获取健康数据
你可以使用 getHealthData
方法来获取特定类型的健康数据。例如,获取步数数据:
DateTime startDate = DateTime.now().subtract(Duration(days: 7));
DateTime endDate = DateTime.now();
List<HealthDataPoint> stepsData = await terraAppleHealth.getHealthData(
type: HealthDataType.steps,
startDate: startDate,
endDate: endDate,
);
for (var dataPoint in stepsData) {
print('Steps: ${dataPoint.value} on ${dataPoint.date}');
}
6. 同步数据到 Terra
如果你需要将数据同步到 Terra 的 API,可以使用 syncHealthData
方法:
await terraAppleHealth.syncHealthData(
startDate: startDate,
endDate: endDate,
);
7. 处理错误
在使用插件时,确保处理可能出现的错误:
try {
await terraAppleHealth.requestPermissions(types: [HealthDataType.steps]);
} catch (e) {
print('Error requesting permissions: $e');
}
8. 监听数据变化
你可以使用 listenToHealthData
方法来监听健康数据的变化:
terraAppleHealth.listenToHealthData((data) {
print('New health data: $data');
});
9. 停止监听
当你不再需要监听健康数据时,可以停止监听:
terraAppleHealth.stopListeningToHealthData();
10. 清理资源
在应用退出时,确保清理插件资源:
[@override](/user/override)
void dispose() {
terraAppleHealth.dispose();
super.dispose();
}