一怎么实时收到设备状态变化? 答:使用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版本号进行加密协议兼容。
上一篇
下一篇