用途
Terra SDK 提供跨平台的 SDK 参考,用于在应用中集成 Terra API。适用于实现 Terra 接入、选择合适 SDK、调用认证与数据接口等场景,覆盖后端与移动端。
支持的平台与包
- Python(后端):
terra-python,用于服务端 API 调用 - JavaScript(后端/Node):
terra-api,支持 Node.js、Deno、Bun - iOS(移动):
TerraiOS,用于 Apple Health 集成 - Android(移动):
terra-android,用于 Samsung Health、Health Connect - React Native(移动):
terra-react,跨平台移动 - Flutter(移动):
terra_flutter,跨平台移动
主要能力
认证
- 生成 Widget 会话(generatewidgetsession)
- 生成认证令牌(generateauthtoken),无参数,为账户生成
- 用户认证(authenticateuser)与取消认证(deauthenticateuser)
用户管理
- 获取单个用户信息(getinfoforuserid)
- 列出所有已连接用户(getalluserids)
- 批量获取用户信息(getinfoformultipleuserids)
- 修改用户(modifyuser)
数据读取
通过 .fetch() 方法读取,数据类型包括:activity、sleep、daily、body、nutrition、menstruation、athlete。参数含 user_id、start_date、end_date、to_webhook。
集成列表
- 基础列表(integrations.fetch)
- 详细信息(integrations.detailedfetch)
数据写入(仅限部分提供方)
- activity.write、nutrition.write、body.write
使用方式
Python
安装:pip install terra-python
初始化示例(同步):
from terra import Terra
client = Terra(dev_id="...", api_key="...")
异步:AsyncTerra。配置项含 timeout(请求超时秒数)、max_retries(自动重试,默认 2)。错误处理使用 terra.core.api_error.ApiError。
JavaScript/Node
安装:npm install terra-api 或 yarn add terra-api
使用 TerraClient,支持 TypeScript 类型与 TerraError,可通过 AbortController 取消请求。
iOS(Swift)
安装:Swift Package Manager 地址 https://github.com/tryterra/TerraiOS,或 CocoaPods pod 'TerraiOS'。使用 Terra.initTerra 初始化,Terra.initConnection 连接 Apple Health,schedulerOn: true 开启后台同步。支持读取与写入数据,可提交计划训练(postPlannedWorkout)。后台投递通过 Terra.setUpBackgroundDelivery()。
Android(Kotlin)
依赖:implementation 'co.tryterra:terra-android:VERSION',最低 SDK 28(Android 9.0+)。使用 Terra.initTerra、Terra.initConnection 连接 Samsung Health 或 Health Connect。需在 AndroidManifest.xml 声明 ACTIVITY_RECOGNITION、BODY_SENSORS 权限。
React Native
安装:npm install terra-react 或 yarn add terra-react;iOS 需 cd ios && pod install。使用 Terra.initTerra 初始化,Terra.initConnection 连接(按平台自动检测 Apple Health 或 Health Connect)。支持读取与写入(postActivity、postNutrition、postBody)。
Flutter
依赖:terra_flutter: ^VERSION。使用 Terra 类初始化与连接,支持读取与写入(postActivity、postNutrition)。
后端令牌生成(移动端必需)
移动 SDK 需要后端生成令牌,示例为 Flask 路由调用 terra.authentication.generateauthtoken(reference_id=...) 返回 token。令牌有效期 180 秒(3 分钟),一次性使用。
错误处理
Python 使用 ApiError 捕获 status_code、message、body;JavaScript 使用 TerraError 同理。
SDK 对比(文档提供)
- 异步支持:全部支持
- 自动重试:仅 Python、JavaScript 支持
- 类型安全:除 React Native 外均标注支持
- 后台同步:仅移动端(iOS、Android、React Native、Flutter)支持
- 写入数据:全部支持
适用场景
- 后端 API 调用:Python 或 JavaScript
- iOS 应用集成 Apple Health:iOS SDK(Swift)
- Android 应用:Android SDK(Kotlin)
- 跨平台移动:React Native 或 Flutter
- 无服务器(Lambda 等):JavaScript
- 数据处理:Python(配合异步)
限制
- 数据写入仅限部分提供方。
- 移动端令牌有效期 180 秒,一次性使用。
- Android 最低 SDK 28。
- 文档展示了示例 dev_id 与 api_key 值,实际使用需替换为真实凭据。
- 文中未提供各 SDK 的收费、价格与授权方式,暂未提供相关信息。