当前位置:首页 > 家具趋势

智能家居APP一些设计技巧

一怎么实时收到设备状态变化?

答:使用mqtt协议实时监听平台推送的消息

二mqtt协议设置上有什么注意的?

答:1最好设计所有消息的统一header,里面放消息id,消息时间,错误码,消息类型

2mqtt登录用户名要包含用户id,方便服务器根据用户名进行授权

3mqtt主题建议包含用户id和app唯一id,以后可以根据这个推送

三mqtt的qos等级怎么取?

答:一般取1,然后根据消息id去重。这样既能保证消息不丢失不重复,对mqtt服务器压力也小一些。

四mqtt服务器连接地址、用户名、密码怎么来?

答:在app代码里面写好服务器域名(建议使用域名,不要用ip,这样以后切换服务器成本比较低)。app在用户登录时,通过http往服务器发起请求,获取mqtt登录信息。

五网络断开时,mqtt推送设备状态收不到,导致设备状态与服务器不一致怎么办?

答:使用推拉结合的方法,每次mqtt服务器重新连接后,要到服务器重新拉一遍设备状态。另外要注意,之前我们碰上过app的mqtt库有时会无法检测到mqtt服务器断连的情况(常见于app在ap/ac组网的场所),所以如果最好设计业务级别的心跳包,并且在客户端监听网络切换,程序进入后台这些常规的会导致mqtt消息接收失败的问情况。

六物联网设备类型多,需求变化频繁,怎么实现app快速发版?

答:尽量对同类设备的UI组件进行抽象,提取共性,避免每个设备要开发一次UI。例如10A插座和16A插座,功能需求大部分是一样的,最好有统一基类。

并且对于频繁修改的ui,可以考虑设计相应的dsl,根据需要从服务器拉取dsl解析成ui,这样小改动不需要重新发版。

七公司资源紧张,能给开发环境配置的设备类型比较少,经常要进行“无实物开发”,代码质量难以保证,怎么办?

答:要做好mock,最好可以在云平台创建虚拟设备。另外,如果一定要调试,建议在debug期间提供一个选项,让开发人员可以切换服务器地址。例如使用开发环境app连接测试环境进行调试。

九售后同事报障时总是缺少关键信息,例如app版本号,用户信息,时间等,跟他们说过好几次,但他们还是习惯只丢一张截图,不方便定位bug。

答:app版本号,消息唯一id,请求时间,app核心版本号,用户信息。

十一app核心版本号是什么作用?

答:app版本号是用户看到的版本号,一般由产品经理命名。app核心版本号是程序员自己维护的,平台会根据app核心版本号来进行功能兼容。一般是由日期+2位整数组成。详细使用方法可以百度,或者参考别人这篇IM开发干货分享:IM客户端不同版本兼容运行的技术思路和实践总结-im中国人-博客园

十二产品经常修改UI的标签,怎么办?

答:建议不要把所有文本都在代码写死,经常变化的信息可以放在数据字典表,前端在启动app时拉取就行。

数据字典结构设计方法|JackHuang'sBlog

答:可以使用乐观锁。每个配置都要有修改时间字段,提交请求时,需要标记是基于哪个时间的配置修改的。如果平台发现在这个时间点后,有其他人修改过配置,则拒绝保存,提示用户重新拉取配置再修改提交。

十四开发阶段物模型频繁变更,怎么办?

答:增加物模型最后修改时间字段,每次启动app时检查,如果发现物模型有变化,则重新拉取。

十五前后端加密协议修改后,有很多客户还是用旧app,怎么办?

答:增加后端接口,让app可以检查当前版本是否需要强制升级。如果是的话提醒用户升级。在过滤阶段,可以让后端根据app版本号进行加密协议兼容。

分享到: