本帖最后由 Genius 于 2016-8-15 18:49 编辑
1. 第一步:将 SDK 导入到你的工程中登录机智云官方网站下载并解压最新版本的SDK。如果您还尚未下载,请 点击这里下载,将解压后的 GizDataAccess.framework 拖动并复制到项目的 Frameworks 目录即可。 2. 第二步:引入头文件和注册 SDK 的 AppID2.1. 获取AppID登录机智云官方网站查看产品信息获得 AppID 。如果尚未注册,请点击这里注册。 2.2. 初始化 SDK打开 *AppDelegate.m(*代表你的工程名字) 导入文件头 | #import <GizDataAccess/GizDataAccess.h>
在 - (BOOL)application:didFinishLaunchingWithOptions:方法中调用 startWithAppID 方法来初始化 SDK,指定APPID.
- (BOOL)application UIApplication *)application didFinishLaunchingWithOptions NSDictionary *)launchOptions {
//Init SDK
[GizDataAccess startWithAppID “APP_ID”];
// ……
return YES;
}
| 3. 第三步:用户登录3.1. 注册用户登录的委托代码示例 | GizDataAccessLogin* gdaLogin = [[GizDataAccessLogin alloc] initWithDelegate:YOUR_LOGIN_DELEGATE];
| 3.2. 实现用户登录的委托方法代码示例 | - (void)gizDataAccessDidLogin GizDataAccessLogin *)login uid NSString *)uid token NSString *)token result GizDataAccessErrorCode)result message NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 登录成功
// ……
}
}
| 3.3. 匿名登录匿名登录时,不需要传入任何用户信息,SDK会生成默认的用户名。登录结果通过用户登录的委托返回。 代码示例: | [gdaLogin loginAnonymous];
| 3.4. 实名登录需要传入注册时的用户账号和密码,用户账号可以是用户名、手机号或邮箱,以及密码。登录结果通过用户登录的委托返回。 代码示例: | [gdaLogin login “YOUR_USERNAME” password “YOUR_PASSWORD”];
| 3.5. 第三方账号登录支持百度、腾讯、新浪账号登录。需要传入登录需要用到的uid和token,以及账号类型。登录结果通过用户登录的委托返回。 代码示例: | [gdaLogin loginWithThirdAccountType:THIRD_ACCOUNT_TYPE uid “UID” token “TOKEN”];
| 4. 第四步:数据接入4.1. 注册数据接入的委托代码示例 | GizDataAccessSource* gdaSource = [[GizDataAccessSource alloc] initWithDelegate:YOUR_DATAACCESS_DELEGATE];
| 4.2. 数据上传实现数据上传的委托方法 代码示例: | - (void)gizDataAccessDidSaveData GizDataAccessSource *)source result GizDataAccessErrorCode)result message NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 数据上传成功
// ……
}
}
|
支持批量数据上传。最后一个参数data为数组类型,可以指定每一组数据的产生时间和内容,格式为标准的JSON。上传结果,通过数据上传的委托返回。 data示例: | @{@"ts": [timestamp], @"attrs": @{ [dynamic_keys]: [dynamic_values], ... } }
|
代码示例: | [gdaSource saveData “YOUR_LOGIN_TOKEN” productKey “YOUR_BLE_PRODUCT_KEY” deviceSN “YOUR_BLE_DEVICE_SN” data “YOUR_DATA”];
| 4.3. 获取数据实现获取数据的委托方法 获取到的数据内容,按以下键值对方式提供: | @"attrs" : { [dynamic_keys] : [dynamic_values], ... },
@"uid" : [uid],
@"sn" : [sn],
@"ts" : [ts],
@"product_key" : [product_key]
|
代码示例: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
| - (void)gizDataAccessDidLoadData:(GizDataAccessSource *)source data:(NSArray *)data result:(GizDataAccessErrorCode)result errorMessage:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 获取数据成功
for(NSDictionary *dict in data) {
NSString* sn = [dict valueForKey "device_sn"];
NSString* productkey = [dict valueForKey:@"product_key"];
NSString* uid = [dict valueForKey:@"uid"];
NSNumber *nTS = [dict valueForKey:@"ts"];
NSDictionary* attributes = [dict valueForKey:@"attrs"];
NSLog(@"sn:%@ productkey:%@ uid:%@ nTS:%@ attributes:%@", sn, productkey, uid, nTS, attributes);
}
}
}
|
获取数据时,需指定起止时间段。如果limit值为0将只返回20条数据,若skip值为负数,则获取失败。数据获取结果,通过获取数据的委托返回。获取到的数据,按照时间排序,最新的数据排在最前面。 代码示例: | [gdaSource loadData:@“YOUR_LOGIN_TOKEN” productKey:@“YOUR_BLE_PRODUCT_KEY” deviceSN:@“YOUR_BLE_DEVICE_SN” startTime:START_DATA_TIME endTime:END_DATA_TIME limit:20 skip:0];
| 5. 第四步:用户账号注册、信息修改和匿名转换5.1. 用户注册注册用户账号注册的委托 代码示例: | GizDataAccessLogin* gdaRegister = [[[GizDataAccessLogin alloc] initWithDelegate:YOUR_USERREGISTER_DELEGATE];
|
实现用户账号注册的委托方法 代码示例 | - (void)gizDataAccess:(GizDataAccessLogin *)login didRegisterUser:(NSString *)uid token:(NSString *)token result:(GizDataAccessErrorCode)result message:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 用户注册成功
// ……
}
}
|
通过accountType参数指定账号注册方式:用户名注册、手机号注册、邮箱注册。只有手机号注册时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。其他注册方式,验证码传nil。注册结果通过用户账号注册的委托返回。 代码示例: | [gdaRegister registerUser:@“YOUR_USERNAME” password:@“YOUR_PASSWORD” code:@“YOUR_PHONE_VERIFYCODE” accountType:YOUR_THIRD_ACCOUNT_TYPE];
| 5.2. 修改密码注册密码修改的委托 代码示例: | GizDataAccessLogin* gdaResetPassword = [[[GizDataAccessLogin alloc] initWithDelegate:YOUR_PASSWORD_RESET_DELEGATE];
|
实现密码修改的委托方法 代码示例: | - (void)gizDataAccess:(GizDataAccessLogin *)login didChangeUserPassword:(GizDataAccessErrorCode)result message:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 密码重置成功
// ……
}
}
| 5.3. 重置密码可以通过手机号和邮箱重置密码。accountType指定是手机号重置还是邮箱重置,只有手机号重置时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。邮箱重置时,手机验证码传nil。重置结果通过密码修改的委托返回。 代码示例: | [gdaResetPassword resetPassword:@“YOUR_USERNAME” code:@“YOUR_PHONE_VERIFYCODE” newPassword:@“YOUR_NEW_PASSWORD” accountType:YOUR_THIRD_ACCOUNT_TYPE];
| 5.4. 修改密码用户实名登录后可以修改密码,修改结果通过密码修改的委托返回。 代码示例: | [gdaLogin changeUserPassword:@“YOUR_LOGIN_TOKEN” oldPassword:@“YOUR_OLD_PASSWORD” newPassword:@“YOUR_NEW_PASSWORD”];
| 5.5. 修改用户信息注册修改用户信息的委托 代码示例: | GizDataAccessLogin* gdaChangeUserInfo = [[[GizDataAccessLogin alloc] initWithDelegate:YOUR_CHANGE_USER_INFO_DELEGATE];
|
实现修改用户信息的委托方法 代码示例: | - (void)gizDataAccess:(GizDataAccessLogin *)login changeUserPassword:(GizDataAccessErrorCode)result message:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 密码重置成功
// ……
}
}
|
用户实名登录后可以修改手机号或邮箱,accountType指定是要修改手机号还是邮箱。只有修改手机号时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。修改邮箱时,验证码传nil。修改结果通过用户信息修改的委托返回。 代码示例: | [gdaLogin changeUserInfo:@“YOUR_TOKEN” username:@“YOUR_USERNAME” code:@“YOUR_PHONE_VERIFYCODE” accountType:THIRD_ACCOUNT_TYPE];
| 5.6. 匿名转换注册匿名转换的委托 代码示例: | GizDataAccessLogin* gdaLogin = [[[GizDataAccessLogin alloc] initWithDelegate:YOUR_ANONYMOUS_TRANS_DELEGATE];
|
实现匿名转换的委托方法 代码示例: | - (void)gizDataAccess:(GizDataAccessLogin *)login didTransAnonymousUser:(GizDataAccessErrorCode)result message:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 匿名转换成功
// ……
}
}
|
匿名登录后,可以转换成普通用户、手机号用户或邮箱用户,您可以通过accountType参数指定要转换的用户类型。转成手机号用户时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。其他用户类型,验证码传nil。转换结果通过匿名转换的委托返回。 代码示例: | [gdaLogin transAnonymousUser:@“YOUR_TOKEN” username:@“YOUR_USERNAME” password:@“YOUR_NEW_PASSWORD” code:@“YOUR_PHONE_VERIFYCODE” accountType:THIRD_ACCOUNT_TYPE];
| 5.7. 获取手机验证码注册手机验证码的委托 GizDataAccessLogin* gdaVerifyCode = [[[GizDataAccessLogin alloc] initWithDelegate:YOUR_VERIFYCODE_DELEGATE]; 实现手机验证码的委托方法 代码示例: | - (void)gizDataAccess:(GizDataAccessLogin *)login didRequestSendVerifyCode:(GizDataAccessErrorCode)result message:(NSString *)message {
if(result == kGizDataAccessErrorNone) {
// 获取到了手机验证码
// ……
}
}
|
在用户注册、信息修改、匿名用户转换等过程中,手机验证码可以通过此方法获取。验证码通过手机验证码的委托返回。 代码示例: | [gdaLogin requestSendVerifyCode: @“PHONE_VERIFYCODE”];
| 6. 用户账号类型7. 第三方账号类型8. 错误码 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | username or password error | | |
|