TerraiOS_v2 1.0.0

TerraiOS_v2 1.0.0

Jeffrey 维护。



  • Jeffrey

TerraiOS

此框架允许开发人员通过 Terra 连接到 Apple Health 和 FreeStyleLibre1。它还包含连接到 Terra REST API 所需的所有类和函数。

规格说明(如果出现问题则读取此部分)

此库仅支持 iOS 13+,并使用 Swift 5.0 实现

设置(有用的东西)

如所述,此框架允许通过 Terra 连接到 Apple Health 和 FreeStyleLibre1。要充分利用此软件包,您需要一个注册了 Apple 开发者计划 的开发者账号。

必须将框架添加到您的项目中作为依赖项。这可以通过编辑项目依赖项并添加 TerraiOS 作为依赖项并指定以下位置完成: https://github.com/tryterra/TerraiOS.git。您还需要将 TerraiOS 添加到 Frameworks 中!

这样,您就可以导入框架为 import TerraiOS

连接到APPLE HEALTH

此库使用iOS 13+的HealthKit。因此,它不会在iPad或MacOS或任何不支持Apple HealthKit的平台上工作。请在项目中以及框架中添加HealthKit作为功能。

此外,您必须在您的Info.plist文件中包含以下键:Privacy - Health Share Usage DescriptionPrivacy - Health Records Usage Description

连接到FREESTYLELIBRE

此库将使用“近场通信标签读取”功能。将其添加到功能中,并将Privacy-NFC Scan Usage Description作为键添加到项目中的Info.plist

是时候找点乐趣了 ;)

要使用此框架,您需要了解一个名为Terra的类。它将管理您所有的连接和数据获取功能。

您可以这样创建一个

let terra: Terra = try! Terra(dev_id: <YOUR DEV ID>,
                         x_api_key: <YOUR X API KEY>, 
                         reference_id: <YOUR USER REFERENCE ID>, 
                         bodySleepDailyInterval: 60, 
                         connections: Set([Connections.APPLE_HEALTH, Connections.FREESTYLE_LIBRE]), 
                         permissions: Set([Permissions.DAILY, Permissions.SLEEP, Permissions.ATHLETE])){success in 
                         // success : Boolean ->  to detect when the initialisation is done.
                         // Can leave this callback empty if not needed, but this allows for you to know when the initialisation is complete. 
                         }

请注意,此初始化可能会失败,并抛出以下错误:TerraError.HealthKitUnavailable, TerraError.UnexpectedError。捕获它们并适当处理,而不是强制尝试!

  • dev_id:这是Terra提供的dev_id
  • x_api_key:这是与Terra提供的dev_id相关联的x_api_key
  • reference_id:这是您用来从您的服务器标识用户到Terra用户的地方
  • bodySleepDailyInterval:身体、睡眠、每日数据的调度间隔(以秒为单位)。
  • connections:您希望通过Terra连接的一组Connections
  • permissions:您希望请求权限(从Health Kit)的一组Permissions

检查身份验证

您现在可以检查用户是否已通过其设备对特定的连接进行身份验证。

terra.checkAuthentication(connection: Connections)

这将返回一个布尔值,表示设备是否已注册。

连接是一个枚举,目前采用:.APPLE_HEALTH.FREESTYLE_LIBRE

获取数据

理想情况下,数据将由调度器通过您的webhook发送(只能在应用程序打开时运行)。

但是,您也可以手动获取数据。

身体数据

terra.getBody(type: Connections, startDate: Date, endDate: Date)

活动数据

terra.getActivity(type: Connections, startDate: Date, endDate: Date)

每日数据

terra.getBody(type: Connections, startDate: Date, endDate: Date)

睡眠数据

terra.getSleep(type: Connections, startDate: Date, endDate: Date)

营养数据

terra.getNutrition(type: Connections, startDate: Date, endDate: Date)

运动员数据

terra.getAthlete(type: Connections)

这些接受日期作为参数的函数,也接受时间间隔(从1970年1月1日开始的时间戳)

数据将始终发送到您的webhook。但是,如果您需要立即获取数据,您可以从以下回调函数中获取

terra.getActivity(type: Connections, startDate: Date, endDate: Date){success, data in 
    //success -> A boolean to signify the function completed successfully
    // data -> A data array corresponding to our data models
}

FreeStyleLibre规格

您需要开始一个扫描会话来读取FreeStyleLibre1传感器的数据!这可以通过以下方式完成

try! terra.readGlucoseData()

注意!当尝试读取已过期的传感器时,此函数可能会抛出TerraError.SensorExpired错误。

注销用户

要注销用户,您只需运行以下操作

terra.disconnectTerra(Connections)

在本 SDK 中连接到 Terra 的 Rest API

您也可以使用此 SDK 发送 Terra API 请求。

您只需按照以下方式实例化一个 TerraClient

let terra: TerraClient = TerraClient(user_id: <TERRA USER ID>, dev_id: <YOUR DEV ID>, xAPIKey: <YOUR X API KEY>)

使用此客户端,您可以向诸如 /activity/body 等端点发送请求。(更多信息 在这里)。

要这样做,您只需调用

terra.getDaily(startDate: Date, endDate: Date , toWebhook: true)!

toWebhook 默认设置为 true。

类似地,您可以使用 getActivity()getBody()getSleep() 分别获取 Activity、Body 和 Sleep。它们都使用相同的参数。

您还可以通过 getAthlete(toWebhook: true) 获取运动员数据,其中不需要日期参数。

这些方法返回与我们的数据模型和 HTTP 响应对应的负载。例如

let activityData = terra.getActivity(startDate: startDate, endDate: endDate, toWebhook: false)!

这些接受日期作为参数的函数,也接受时间间隔(从1970年1月1日开始的时间戳)

在这种情况下,您可以通过访问 activityData.user 获取用户数据,通过:activityData.user.user_id 获取用户 ID,并通过 activityData.data 获取数据数组。这与我们的 有效负载模型 返回的结构相似

{
    "status": "success",
    "type": "activity",
    "user": {
        "user_id": "b3a63gegd-ege1-42bf-a8ff-f6f1fege6e2a26",
        "provider": "GOOGLE",
        "last_webhook_update": "2022-01-12T08:00:00.036208+00:00"
    },
    "data": [...]
}

不带小部件验证和注销用户

此包还包含 /authenticateUser/deauthenticateUser 端点。

您可以使用 TerraAuthClient 类来调用它

let terraAuthClient: TerraAuthClient = TerraAuthClient(dev_id: DEVID, xAPIKey: XAPIKEY)

然后,您可以运行以下命令来生成一个身份验证 URL(以下使用 FITBIT 作为示例)

terraAuthClient.authenticateUser(resource: "FITBIT")

然后,您可以通过以下方式注销用户

terraAuthClient.deauthenticateUser(user_id: "USER_ID")