IOS 开发文档¶
概述¶
App 开发之前请先申请相关账号:
- 申请第三方平台登录账号目前支持 QQ,微信,微博,Google,Twitter,Facebook
- 申请个推账号
- 申请Hekr平台账号,并完善相关信息
开发准备¶
下载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" : @"hub.hekr.me", // 服务器地址
@"servicePort" : @(83), // 服务器端口
@"SSID" : @"HEKR-TEST" // 路由器SSID
}
3.2 停止设备发现¶
[[Hekr sharedInstance] stopConfig];