概要
现阶段本产品只对小米生态链企业及合作伙伴正式开放.
使用说明
这里介绍如何配置和使用小米健康服务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 文件为源代码形式打开,添加以下信息
<dict>
<key>MiSDKAppID</key>
<string>1000888</string>
<key>MiSDKAppKey</key>
<string>500088888888</string>
</dict>
- 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<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