概要

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

使用说明

这里介绍如何配置和使用小米健康服务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/

配置SDK运行参数

运行SDK注册小米推送服务的时候,需要使用AppID,AppKey,等参数来验证使用者的合法性。 打开工程下资源文件Info.plist 文件为源代码形式打开,添加以下信息

<dict>
    <key>MiSDKAppID</key>
    <string>1000888</string>
    <key>MiSDKAppKey</key>
    <string>500088888888</string>
</dict>

注册小米健康服务

当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支持如下功能

API说明

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

@interface MiHealthKit : NSObject

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

API 功能
+ (void)registerMiHealthKit:(NSString*)token delegate:(id<MiHealthKitDelegate>)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<MiHealthKitDelegate>)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 返回结果无效

常见问题

联系DevFit@xiaomi.com