设备管理
绑定设备
- 对于WIFI设备,则需要先经过设备配网后,APP拿到配网的回调调用
bindDevice
接口绑定设备。 - 对于GPRS设备,则无需以上设备激活的流程,通过扫码或其他方式获取物理Id后调用
bindDevice
进行绑定即可。建议流程:若设备上有是否连接上AbleCloud云端的指示灯,则可以提示用户在指示灯亮起的时候绑定设备。若无指示灯,则可在用户点击开始绑定之后,建议通过CountDownTimer每隔2s钟绑定一次设备,在连续绑定几次之后再提示用户失败或成功。
注意:调用
bindDevice
接口时要求设备已经连上云端且当前在线。
普通设备
通过获取到的subdomainID匹配subdomain,然后在成功激活设备后的回调方法中,通过subdomian和物理Id绑定设备。
AC.bindMgr().bindDevice(subDomain, physicalDeviceId, deviceName, new PayloadCallback<ACUserDevice>() {
@Override
public void success(ACUserDevice userDevice) {
//绑定成功后返回设备信息
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
设备无法绑定时,请检查以下问题:
- 1.设备已经被其他人绑定过了。
- 2.设备的domain和subdomain信息有误。
- 3.确保设备已经连上云端,如电源供电是否正常等。(可通过AbleCloud管理控制台中的 设备管理 查看设备是否在线判断已经连上云端)
绑定成功后,通过listDevice 接口可以列出已经绑定的设备列表。
分享设备
- 第一种分享方式是管理员输入用户的帐号(手机号)直接把设备分享给用户
- 第二种方式为管理员分享二维码后,用户再通过扫码的形式绑定设备获得设备的使用权。推荐使用第二种分享机制。
||SKIP||
管理员直接分享设备给已注册的普通用户
AC.bindMgr().bindDeviceWithUser(subDomain, deviceId, account, new VoidCallback() {
@Override
public void success() {
//成功分享设备给account用户
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
管理员通过分享设备二维码的形式分享设备
//管理员获取分享码
AC.bindMgr().fetchShareCode(deviceId, timeout, new PayloadCallback<String>() {
@Override
public void success(String shareCode) {
//成功获取分享码
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
//普通用户通过扫分享码绑定设备
bindMgr.bindDeviceWithShareCode(shareCode, new PayloadCallback<ACUserDevice>() {
@Override
public void success(ACUserDevice userDevice) {
//成功绑定管理员分享的设备
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
注:管理员分享的二维码有有效期。默认为一个小时。调用fetchShareCode接口时开发者可以自定义有效时间。若已存在未过期二维码则返回原有二维码并更新timeout时间,若原有二维码已过期则返回新的二维码。
同时还提供了重新生成分享码的接口(原分享码会失效)
AC.bindMgr().refreshShareCode(deviceId, timeout, new PayloadCallback<String>() {
@Override
public void success(String shareCode) {
//成功刷新分享码
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
相关注意事项如下:
- 设备的逻辑ID可以通过调用
listDevice
接口获取.- 如果获取失败, 请检查子域和设备逻辑ID是否在正确.
- 该接口只有设备管理员才可以调用.
- 建议开发者将分享码做成二维码, 然后让其他用户通过扫码绑定
解绑设备
||SKIP||
管理员或普通用户解绑设备
bindMgr.unbindDevice(subDomain, deviceId, new VoidCallback() {
@Override
public void success() {
//解绑成功
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});
注意:如果是管理员解绑设备,那么其他绑定该设备的普通成员也会失去该设备的使用权。
管理员取消其他普通成员对该设备的控制权
bindMgr.unbindDeviceWithUser(subDomain, userId, deviceId, new VoidCallback() {
@Override
public void success() {
//解绑成功
}
@Override
public void error(ACException e) {
//网络错误或其他,根据e.getErrorCode()做不同的提示或处理
}
});