本帖最后由 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  |   |  |  
  
 |