edit

IOS 开发文档

概述

App 开发之前请先申请相关账号:

  • 申请第三方平台登录账号目前支持 QQ,微信,微博,Google,Twitter,Facebook
  • 申请个推账号
  • 申请Hekr平台账号,并完善相关信息

开发准备

下载SDK

HEKR-iOS-SDK

导入SDK

1. 使用 Cocoapods 安装 iOS SDK

Cocoapods使用参考官方文档《CocoaPods安装和使用教程》

pod 'HekrSDK',:subspecs => ['Core','socialWeibo'], :podspec => 'https://raw.githubusercontent.com/HEKR-Cloud/HEKR-IOS-SDK/3.0/HekrSDK.podspec'

配置文件

配置文件,不需要的项可以不用配置,推荐保存为JSON并加密存储,需要时再解密

{
  "Hekr":{
    "AppId":"AppId",
  },
  "Social":{
    "Weibo":{
      "AppId":"AppId",
      "AppKey":"AppKey",
      "AppSecurity":"AppSecurity"
    },
    "QQ":{
      "AppId":"AppId",
      "AppKey":"AppKey",
    },
    "Weixin":{
      "AppId":"AppId",
      "AppSecurity":"AppSecurity"
    },
    "Facebook":{
      "AppId":"AppId",
      "AppSecurity":"AppSecurity"
    },
    "Google":{
      "AppId":"AppId",
    },
    "Twitter":{
      "AppKey":"AppKey",
      "AppSecurity":"AppSecurity"
    }
  },
  "push":{
    "AppId":"AppId",
    "AppKey":"AppKey",
    "AppSecurity":"AppSecurity"
  }
}

基本功能集成

1. 配置

*AppDelegate.m(*代表你的工程名字)的配置主要包括账号的相关配置,起始页面两部分,代码示例如下:

- (BOOL])application:(UIApplication] *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    [[Hekr sharedInstance] config:config startPage:@"**********" launchOptions:launchOptions];
    [[Hekr sharedInstance] firstPage];
}
  • config:配置信息
  • startPage:将@"**********" 中的 ********** 替换成自己的页面 如果使用native开发可将该参数置为nil

2. 推送消息配置

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
  [[Hekr sharedInstance] didRegisterUserNotificationSettings:notificationSettings];
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
  [[Hekr sharedInstance] registNotificationsWithDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
  [[Hekr sharedInstance] didReceiveRemoteNotification:userInfo];
}

3. SSO配置

- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
  return [[Hekr sharedInstance] openURL:url sourceApplication:sourceApplication annotation:annotation];
}

4. iOS9.0中URL Scheme引入白名单

iOS9.0中必须引入白名单才可以进行第三方应用的跳转,如微信,微博登录.. 具体配置方法可以查看URL Scheme引入白名单

开发接口

1. 用户接口

1.1 当前用户token

[Hekr sharedInstance].user

如果用户未登录则返回nil

返回值

  • uid:用户唯一ID

  • access_token:用户token

1.2 登录

[[Hekr sharedInstance] login:userName password:password callback:^(HekrUserToken* user,NSError* error){

}];

参数

  • userName:用户名

  • password:密码

  • callback:回调函数

返回值

  • user:用户token

  • error:错误信息

1.3 注销

[[Hekr sharedInstance] logout];

1.4 第三方登录

 [[Hekr sharedInstance] sso:KeyOfHekr controller:nil callback:^(id token, id user, NSError * err) {

  }];

参数

  • sso:社会类型,决定是哪一种三方登录
  • controller:当前所在的controller

返回值

  • token:是个json数据,包含了一些第三方的信息。
  • user:用户信息
  • err:错误信息

2. 设备控制

2.1 发送控制指令到设备

id command = @{
  @"action" : @"appSend",
  @"params" : @{
    @"devTid" : devTid,                   
    @"ctrlKey"  : @"xxxxxx",                
    @"data" : @{
      @"raw":@"48xxxxxxx"
    }
  }
};
[[Hekr sharedInstance] send:command to:devTid callback:^(id respond,NSError* error){

}];

SDK将自动选择数据通道 蓝牙,局域网,云端

参数

  • command:指令协议 参考协议 该协议中包含的msgID和appTid字段将由SDK自动补全

  • devTid:设备ID

  • callback:回调函数

返回值

  • respond:协议应答 参考协议
@{
  @"msgId" : @(291),
  @"action" : @"appSendResp",
  @"code" : @(200),
  @"desc" : @"success",
  @"params" : @{
    @"devTid" : @"xxxxxxx",
    @"ctrlKey" : @"xxxxxxxxxx",
    @"appTid" : @"xxxxxxxx",
    @"data" : @{
      @"raw" : @"48xxxxx"
    }
  }
}
  • error:错误信息

2.2 接收设备信息

id filter = @{@"action" : @"devSend",
                @"params" : @{
                  @"devTid" : xxxxxxx
                }
              };
[[Hekr sharedInstance] recv:filter obj:obj callback:^(id obj, id msg){

}];

参数

  • filter:过滤条件 如果某个key的值为NSNull表示只检查该key是否存在

  • obj:标识对象 当该对象释放后将不再接收消息

  • callback:回调函数

返回值

  • obj:标识对象

  • msg:符合条件的协议 参考协议

3. 配网

3.1 设备发现

[[Hekr sharedInstance] configSearch:ssid password:password callback:^(id dev){

}];

参数

  • ssid:Wi-Fi名字 只支持2.4G频段

  • password:Wi-Fi密码

  • callback:回调函数 该函数会被调用多次 每次返回一个设备对象

返回值

  • dev:设备对象
@{                                        
  @"devTid" : @"ESP_xxxxxx",  //绑定设备时需要用到
  @"bindKey" : @"xxxxxxxx",   //绑定设备时需要用到
  @"mid" : @"0cc175b9c0f1",
  @"workMode" : @(0),
  @"MAC" : @"08EFA809DE6D",                         // 设备MAC地址
  @"tokenType" : @(2),                                // 0、1保留、2.动态token
  @"binVer" : @"3.0.61.2",                          // 固件版本
  @"binType" : @"A",                                // 固件类型
  @"SDKVer" : @"3.0.61.2",                          // 固件SDK版本
  @"serviceHost" : @"asia-dev.hekr.me",             // 服务器地址
  @"servicePort" : @(83),                             // 服务器端口
  @"SSID" : @"HEKR-TEST"                            // 路由器SSID
}

3.2 停止设备发现

[[Hekr sharedInstance] stopConfig];