智能客服
你问我答,随时在线为你解决问题
本章节提供通过华为Health Service Kit服务端REST API写入用户路线方法示例。用户的路线是以GPX文件格式导入,可以导入轨迹(Track)或路程(Route)类型的数据。整个流程分为两步:
三方生态应用路线导入路线后,Health Service Kit服务端会生成并返回路线的唯一ID,生态应用可基于路线ID通过DeepLink方式跳转运动健康App我的路线详情页面,自动导入路线至运动健康App中。
HTTP请求,请参见路线导入接口。
- PUT
- https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX
请求示例
- PUT
- https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX
请求体
- Content-Type: application/xml
- Authorization: Bearer ***
- x-client-id: ***
- x-version: ***
- x-caller-trace-id: ***
- <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
- <gpx version="1.1" creator="***" xmlns:xsi="***" xmlns="***" xsi:schemaLocation="***">
- <metadata>
- <time>1970-01-01T00:00:00Z</time>
- </metadata>
- <extensions>
- <totalTime>10000</totalTime>
- <totalDistance>10000</totalDistance>
- <routeName>testRouteName</routeName>
- </extensions>
- <rte>
- <rtept lat="24.27207756704355" lon="98.6666815648492">
- <ele>2186.0</ele>
- </rtept>
- <rtept lat="24.27218810046418" lon="98.66668171910422">
- <ele>2188.0</ele>
- </rtept>
- <rtept lat="24.27229019048912" lon="98.6667668786458">
- <ele>2188.0</ele>
- </rtept>
- <rtept lat="24.27242784195029" lon="98.6668908573738">
- <ele>2188.0</ele>
- </rtept>
- </rte>
- <wpt lat="22.66125"lon="114.063013">
- <desc>12</desc>
- <name>12</name>
- <sym>1</sym>
- <extensions>
- <mode>1</mode>
- <color>1</color>
- </extensions>
- </wpt>
- <wpt lat="22.661431"lon="114.064915">
- <desc>13</desc>
- <name>13</name>
- <sym>2</sym>
- <extensions>
- <mode>1</mode>
- <color>3</color>
- </extensions>
- </wpt>
- </gpx>
响应体
- HTTP/1.1 200 OK
- Content-type: application/json;charset=utf-8
- {
- "routeId": 167001079583340846
- }
HTTP请求,请参见路线导入接口。
- PUT
- https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX
请求示例
- PUT
- https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX
请求体
- Content-Type: application/xml
- Authorization: Bearer ***
- x-client-id: ***
- x-version: ***
- x-caller-trace-id: ***
- <?xml version="1.0" encoding="UTF-8"?>
- <gpx creator="***" version="1.1" xsi:schemaLocation="***" xmlns:ns3="***" xmlns="***" xmlns:xsi="***" xmlns:ns2="***">
- <metadata>
- <time>2021-06-30T10:34:55.000Z</time>
- </metadata>
- <extensions>
- <totalTime>10000</totalTime>
- <totalDistance>10000</totalDistance>
- <routeName>testRouteName2</routeName>
- </extensions>
- <trk>
- <name>跑步</name>
- <type>running</type>
- <trkseg>
- <trkpt lat="22.6551113091409206390380859375" lon="114.05494303442537784576416015625">
- <ele>-33.200000762939453125</ele>
- <time>2021-06-30T10:35:09.000Z</time>
- <extensions>
- <ns3:TrackPointExtension>
- <ns3:atemp>31.0</ns3:atemp>
- <ns3:hr>110</ns3:hr>
- <ns3:cad>79</ns3:cad>
- </ns3:TrackPointExtension>
- </extensions>
- </trkpt>
- <trkpt lat="22.655114494264125823974609375" lon="114.05494051985442638397216796875">
- <ele>-33.40000152587890625</ele>
- <time>2021-06-30T10:35:10.000Z</time>
- <extensions>
- <ns3:TrackPointExtension>
- <ns3:atemp>31.0</ns3:atemp>
- <ns3:hr>111</ns3:hr>
- <ns3:cad>79</ns3:cad>
- </ns3:TrackPointExtension>
- </extensions>
- </trkpt>
- <trkpt lat="22.65512078069150447845458984375" lon="114.05494404025375843048095703125">
- <ele>-33.59999847412109375</ele>
- <time>2021-06-30T10:35:11.000Z</time>
- <extensions>
- <ns3:TrackPointExtension>
- <ns3:atemp>31.0</ns3:atemp>
- <ns3:hr>112</ns3:hr>
- <ns3:cad>79</ns3:cad>
- </ns3:TrackPointExtension>
- </extensions>
- </trkpt>
- <trkpt lat="22.654982395470142364501953125" lon="114.05491151846945285797119140625">
- <ele>-33.59999847412109375</ele>
- <time>2021-06-30T10:35:13.000Z</time>
- <extensions>
- <ns3:TrackPointExtension>
- <ns3:atemp>31.0</ns3:atemp>
- <ns3:hr>114</ns3:hr>
- <ns3:cad>77</ns3:cad>
- </ns3:TrackPointExtension>
- </extensions>
- </trkpt>
- </trkseg>
- </trk>
- <wpt lat="22.66125"lon="114.063013">
- <desc>12</desc>
- <name>12</name>
- <sym>1</sym>
- <extensions>
- <mode>1</mode>
- <color>1</color>
- </extensions>
- </wpt>
- <wpt lat="22.661431"lon="114.064915">
- <desc>13</desc>
- <name>13</name>
- <sym>2</sym>
- <extensions>
- <mode>1</mode>
- <color>3</color>
- </extensions>
- </wpt>
- </gpx>
wpt是CP点信息,包括GPS需要记录的CP点名称,标记颜色等信息。在特定场景才需要导入轨迹标记点,不是必需字段。
响应体
- HTTP/1.1 200 OK
- Content-type: application/json;charset=utf-8
- {
- "routeId": 167001079583340846
- }
获取华为运动健康App版本号
- long versionCode;
- try {
- PackageInfo packageInfo =
- this.getPackageManager().getPackageInfo("com.huawei.health", PackageManager.GET_META_DATA);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- versionCode= packageInfo.getLongVersionCode();
- } else {
- versionCode= packageInfo.versionCode;
- }
- } catch (PackageManager.NameNotFoundException e) {
- versionCode = 0L;
- }
DeepLink跳转
当获取华为运动健康App版本号返回的versionCode不低于1300001310 时,可使用DeepLink跳转功能。
| 跳转类型 | 跳转地目的地 | 目标类型 | 跳转地址 | 跳转参数 | 是否必填 | 参数类型 | 跳转参数说明 |
|---|---|---|---|---|---|---|---|
| DeepLink | 运动健康App-我的路线详情页面 | Activity | huaweischeme://healthapp/router/routeDetail | fromFlag | 是 | String | 填写固定值:"cloud_flag" |
| routeId | 是 | long | 路线写入成功后返回的路线ID |
示例代码:
- String deeplink = "huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=" + routeId;
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(deeplink));
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
- startActivity(intent);
iOS版本15.0.12.305及以上。
DeepLink跳转
| 跳转类型 | 跳转地目的地 | 目标类型 | 跳转地址 | 跳转参数 | 是否必填 | 参数类型 | 跳转参数说明 |
|---|---|---|---|---|---|---|---|
| DeepLink | 运动健康App-我的路线详情页面 | Activity | huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=" + routeId | routeId | 是 | long | 路线写入成功后返回的路线ID |
示例代码:
- let routeId: String = "1234"
- let deeplink: String = "huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=\(routeId)"
- guard let openUrl = URL(string: deeplink) else {
- return false
- }
- if UIApplication.shared.canOpenURL(openUrl) {
- UIApplication.shared.open(openUrl, options: [:], completionHandler: nil)
- }