概要

现阶段本产品只对小米生态链企业及合作伙伴正式开放.

使用说明

这里介绍如何配置和使用小米健康服务iOS客户端SDK,您也可以参照Demo来配置和使用小米健康服务。

在使用小米健康服务前,开发者需要先登录小米开发者网站http://developer.xiaomi.com。注册App,申请对应的AppID, AppKey 等等信息

其中AppID和AppKey是客户端的应用标识,在客户端SDK初始化时使用

搭建XCode运行环境

我们的libMiHealthKit库文件同时包含i386、x86_64、arm64、armv6和armv7的代码,所以libMiHealthKit将同时支持真机与模拟器。

MiHealthKit使用需要用到小米账号,请先集成小米账号 http://dev.xiaomi.com/docs/passport/user_guide/

小米健康服务IOS版支持的最低系统版本iOS5.0

添加libMiHealthKit.a , MiHealthKit.h 到工程

引入库 libz.dylib,CFNetwork.framework,CoreGraphics.framework (如果已经引入,请忽略)

配置SDK运行参数

运行SDK注册小米推送服务的时候,需要使用AppID,AppKey,等参数来验证使用者的合法性。

打开工程下资源文件Info.plist 文件为源代码形式打开,添加以下信息

MiSDKAppID

1000888

MiSDKAppKey

500088888888

MiSDKAppID, MiSDKAppKey 为在小米开发者网站http://developer.xiaomi.com。注册App,申请的AppID, AppKey

注册小米健康服务

当iOS客户端应用启动时,调用以下代码注册小米健康服务

// token 是从小米账号SDK获得
[MiHealthKit registerMiHealthKit:token delegate:self];

实现MiHealthKitDelegate回调

SDK中所有请求操作都是异步的。调用成功与失败都会通过MiHealthKitDelegate来通知。

在AppDelegate.h中加入MiHealthKitDelegate协议

#import "MiHealthKit.h"

 // 
@interface AppDelegate : UIResponder
<
MiHealthKitDelegate, // 
UIApplicationDelegate
>
@property (strong, nonatomic) UIWindow *window;
@end
AppDelegate.m中实现回调方法
#pragma mark MiHealthKitDelegate
- (void)miHealthKitRequestSuccWithSelector:(NSString*)selector data:(NSDictionary *)data
{
// 请求成功
}
- (void)miHealthKitRequestErrWithSelector:(NSString*)selector data:(NSDictionary *)data
{
// 请求失败
}

GET/SET 健康数据

此版SDK支持如下功能

createDataSource, 创建数据源,并且该数据源对于该用户来说,必须是全局唯一的.

getDataSource, 携带dataSourceId,来获取该dataSourceId的data source.

listDataSource, 查询所有对用户可见的data sources. 用户可以查询其所有可见的data sources,也可以通过指定data type来查询特定类别的data sources.

deleteDataSource, 在请求URL中携带dataSourceId,来删除id值为该dataSourceId的data source.

updateDataSource, 更新某个特定data source的信息.

postDataSet, 客户端收集data points,把data points添加到datasets中,然后把dataset上传给服务端.

getDataSet, 该方法的path parameter中需要携带一个datasetId,该datasetId有startTime-endTime组成.

deleteDataSet, 删除某个特定时间段中的data point.

API说明

MiHealthKit.h 分两部分 @interface MiHealthKit ,@protocol MiHealthKitDelegate

@interface MiHealthKit : NSObject

MiHealthKit是小米健康服务在iOS平台的接入类。单实例。并提供了一系列静态方法。

API

功能

+ (void)registerMiHealthKit:(NSString*)token delegate:(id)delegate;

注册Kit, 提供小米账号系统生产的token.

+ (void)createDataSource:(MHMDataSource*)dataSource;

该接口用于创建数据源,并且该数据源对于该用户来说,必须是全局唯一的.

+ (void)getDataSource:(NSString*)dataSourceID;

在请求URL中携带dataSourceId,来获取id值为该dataSourceId的data source.

+ (void)listDataSource:(MHMDataType*)dataType;

查询所有对用户可见的data sources. 用户可以查询其所有可见的data sources,也可以通过指定data type来查询特定类别的datasources.

+ (void)deleteDataSource:(NSString*)dataSourceID;

在请求URL中携带dataSourceId,来删除id值为该dataSourceId的data source.

+ (void)updateDataSource:(NSString*)dataSourceID object:(MHMDataSource*)dataSource;

更新某个特定data source的信息.

+ (void)postDataSet:(NSArray*)array;

客户端收集data points,把data points添加到datasets中,然后把dataset上传给服务端.

+ (void)getDataSetWithDataSourceID:(NSString*)dataSourceID datasetID:(NSString*)dataSetID limit:(int)limit page:(int)page;

该方法的path parameter中需要携带一个datasetId,该datasetId有startTime-endTime组成.

+ (void)deleteDataSetWithDataSourceID:(NSString*)dataSourceID datasetID:(NSString*)dataSetID;

删除某个特定时间段中的data point.

@protocol MiHealthKitDelegate

MiHealthKitDelegate SDK的所有请求都是异步操作,用户需监听此方法。

API

功能

- (void)miHealthKitRequestSuccWithSelector:(NSString*)selector data:(NSDictionary *)data;

当请求成功时返回

- (void)miHealthKitRequestErrWithSelector:(NSString*)selector data:(NSDictionary *)data;

当请求失败时返回

方法详细说明

+ (void)registerMiHealthKit:(NSString*)token delegate:(id)delegate;

注册SDK, 提供小米账号系统生产的token。建议在程序启动时执行

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary)launchOptions

参数列表

参数说明

(NSString*)token

小米账号获取的用户token

(id)delegate

加入请求成功与失败的监听

+ (void)createDataSource:(MHMDataSource*)dataSource;

该接口用于创建数据源,并且该数据源对于该用户来说,必须是全局唯一的.

在此方法中,数据源的data stream id不需要客户端提供,它会由服务端生成.

该接口每次可以创建一个data source.

参数列表

参数说明

(MHMDataSource*)dataSource

创建的dataSource模型

+ (void)getDataSource:(NSString*)dataSourceID;

在请求URL中携带dataSourceId,来获取id值为该dataSourceId的data source.

参数列表

参数说明

(NSString*)dataSourceID

获取的dataSourceID

+ (void)listDataSource:(MHMDataType*)dataType;

查询所有对用户可见的data sources.

用户可以查询其所有可见的data sources,也可以通过指定data type来查询特定类别的data sources.

参数列表

参数说明

(MHMDataType*)dataType

dataSource类型

+ (void)deleteDataSource:(NSString*)dataSourceID;

在请求URL中携带dataSourceId,来删除id值为该dataSourceId的data source.

参数列表

参数说明

(NSString*)dataSourceID
dataSourceID
+ (void)updateDataSource:(NSString)dataSourceID object:(MHMDataSource)dataSource;

更新某个特定data source的信息.

参数列表

参数说明

(NSString*)dataSourceID

原dataSouceID

(MHMDataSource*)dataSource

更新的datasource

+ (void)postDataSet:(NSArray*)array;

客户端收集data points,把data points添加到datasets中,然后把dataset上传给服务端.

dataset只是一个数据传输结构,服务端并不存储dataset本身,而只是存储dataset中包含的data points.

参数列表

参数说明

(NSArray*)array

上报的DataPoint数组

+ (void)getDataSetWithDataSourceID:(NSString)dataSourceID datasetID:(NSString)dataSetID limit:(int)limit page:(int)page;

该方法的path parameter中需要携带一个datasetId,该datasetId有startTime-endTime组成

该方法的响应报文中会包含一个dataset,dataset中包含所有endTimeNanos落在[startTime, endTime]区间的data point

参数列表

参数说明

(NSString*)dataSourceID
dataSourceID
(NSString*)dataSetID
dataSetID
(int)limit

分页数量

(int)page

第几页

+ (void)deleteDataSetWithDataSourceID:(NSString)dataSourceID datasetID:(NSString)dataSetID;

删除某个特定时间段中的data point.

endTimeNanos落在[startTime, endTime]中的data point将会被删除.

参数列表

参数说明

(NSString*)dataSourceID
dataSourceID
(NSString*)dataSetID
dataSetID
- (void)miHealthKitRequestSuccWithSelector:(NSString)selector data:(NSDictionary)data;

当请求成功后,会回调此方法

参数列表

参数说明

(NSString *)selector

请求调用方法的名称。例: "createDataSource:"

(NSDictionary *)data

请求后下发的服务器信息。

- (void)miHealthKitRequestErrWithSelector:(NSString)selector data:(NSDictionary)data;

当请求失败后,会回调此方法

参数列表

参数说明

(NSString *)selector

请求调用方法的名称。例: "createDataSource:"

(NSDictionary *)data

请求后下发的服务器信息。

错误码

错误码

说明

-1

访问超时,网络信号不好

-2

无网络

-3

未知错误,通常意味着MiPush服务器的业务错误

-4

操作太频繁

-5

请求无效参数

-6

返回结果无效

常见问题