FAQ之appSDK应用端
通过社群,客服,邮箱等等渠道。我们收集了许多开发者在开发使用过程中遇到的问题、比如sdk的使用,开源框架的使用等,本贴为在app二次开发时候遇到的常见问题,特开此贴汇总问题并附上答案。[*]gokit3 介绍、开发指南、资料下载(不定时更新)http://club.gizwits.com/thread-2764-1-1.html
[*]Gokit2历代资料整理(原理图,底板原厂文件)http://club.gizwits.com/thread-3721-1-1.html
本帖最后由 boboP 于 2017-6-26 11:24 编辑
1.gokit2 app 绑定设备,提示下载配置文件失败
答:检查手机的外网是否正常。可以尝试切换成4G网络再下载文件。
2、极光推送申请的时候要填写包名,这个是填什么呢?是自己定义么?然后开发的时候用这个包名么?
答:包名是Android应用的包名,详情请参考极光的开发文档。
3、app运行的时候经常提示设备断开是什么原因?一般应该是不会提示的啊。就是自己做的app,app应该跟设备有交互尽管在没有写数据的时候,就是心跳吧,但是app端会自己就断开连接,不知道为什么
答:原因有两个:(1)网络环境频繁切换引起,可能是有两个同名的热点;(2)设备频繁掉线,路由器把设备给踢下线;
4、"用户注册界面点击发送验证码失败。。回调didRequestSendPhoneSMSCode(GizWifiErrorCode result, String token)返回的result的值是:GizWifiErrorCode.GIZ_SDK_CLIENT_NOT_AUTHEN ,枚举id:8002 , 描述:Client与Daemon之间如果没有通过摆手认证,任何数据交互都无效。。Daemon是什么?握手认证如何实现? "
答:可能是pk,appid,app-secret不对。Daemon是SDK里面的server部分,Client是SDK里面的客户端。Daemon和Client之间的握手,需要appid。
5、APP发送指令的时候老实提示GIZ_SDK_DEVICE_NOT_READY?答:(1)要看模组有没有限制绑定时间,如果限制了绑定时间,就没法登录设备了;(2)可能是局域网里面手机SDK没有拿到模组的passcode,导致没法登陆;(3)之前发现SDK的内部机制有问题,也会导致这个问题,但是bug已经修复,建议使用最新版本的SDK。
6、机智云怎样判断当前模块和终端是局域网还是广域网,要理论答:手机SDK里面是这样判断的:SDK每隔1秒会在局域网发出广播包,模组如果在局域网的话,收到了广播包就会给SDK回复passcode,这时候SDK就能通过passcode来登录设备了。如果SDK收不到回复,就会判断设备列表里面的设备是远程的,会通过广域网查询设备状态。
7、apicloud gizWifiSDK支持邮箱注册接口吗?答:支持的。可以用registerUser({params}, callback(ret, err))这个函数,里面的accountType参数,注册邮箱时,此参数指定为邮箱用户。详情请参考下面的文档:http://docs.apicloud.com/Client-API/Open-SDK/gizWifiSDK#a21
8、设备接入SDK中,当注册为普通用户时怎么找回密码啊答:可以的,可以通过下面的函数实现:
9、接入我们机智云,用户不是扫描二维码添加设备么?问题1 这个二维码我自己给,还是依据机智云;2 如果依据机制云,具体规则在哪里?答:二维码里面需要包含设备的PK,pk_secret和mac地址,二维码的规则可以自己定义,比方说可以定义成一段字符串:“<pk>+<pk_secret>+<mac>”。得到这些数据以后,可以调用下面的函数进行设备绑定:GizWifiSDK.sharedInstance().bindRemoteDevice ("your_uid", "your_token", "your_device_mac", "your_device_product_key", "your_product_secret");
10、XPGWifiSDK.sharedInstance().bindDevice(String uid, String token, String did, String passCode, String remark);这里uid和token不是必须的吧?答:绑定设备的时候,uid和token都是必须的。
11、在设备列表只能进入单个设备查看单个设备的状态。达到这种数组这种效果请问要怎么做。。我发现GizWifiDevice不能建数组。答:这种效果只能在APP的逻辑里面实现了。
12.获取失败。错误号:GIZ_SDK_CONNECTION_ERROR答:网络状况差的时候,app连不上机智云会出这个error。
13、使用IOE Demo还要另外用手机号注册一个账号,不能用开发者的邮箱账号登录,这两个账号的区别是什么?为什么不用同一个呢?为什么机智云开发者账号和IOE demo的账号是不同的?答:因为开发者中心的账户域名还没有和APP的账户域名打通,所以两边的账号是不能互通互用的。
14、XPGWifiSDK.sharedInstance().bindDevice(String uid, String token, String did, String passCode, String remark);请问这个remark应该怎么填?作用是什么?答:这个remark属于客户的自定义字段,客户可以随意使用,比方说可以用来定义设备的分组信息,对同一组的设备,可以用一样的remark字段。
15.应用发送扩展数据点透传与纯透传的格式分别是怎样的?答:应用做扩展数据点透传格式与普通数据点相同,不同的是扩展数据点需要做base64加密再下发数据。纯透传下发格式@{@“binary”:data}, 这里的data也是纯透传数据做base64加密获取的。扩展数据点透传格式与普通数据点透传完全相同,对于透传数据不需要再做加密处理。
16.在从设备列表进入主控界面时,会判断设备是否可控,不可控则弹框直到设备可控弹框则取消,不过基于用户体验考虑,设置了一个超时时间,在这个时间范围内,设备还不可控,则取消订阅,并返回设备列表。将超时时间设置为2s或者4s时均会发现设备高概率出现不可控并返回设备列表的情况。
答:SDK订阅接口的设计是,在小循环内若10s内设备还不可控,则认为设备订阅失败;在大循环内,则是30s。基于此,插座APP设计在进入控制界面后,小循环给10s的超时时间,大循环由于考虑到用户体验问题,给予20s的超时时间。这样更改后,插座APP基本不会出现设备不可控的现象。
17.SDK在什么情况下会定时去获取一次设备状态?答:SDK在小循环控制设备时,不会定时去获取设备状态;在大循环控制设备状态时,若是wifi下,则1分钟获取一次设备状态,在2G/3G网络下,则10分钟获取一次
18.SDK在订阅设备成功后,会去登陆设备直到登陆成功, 则在什么情况下会停止登陆?答:设备订阅成功后,Deamon会尝试登陆设备,只有在登陆成功或者取消订阅之后,Deamon才会停止登陆尝试。这跟订阅的超时设置无关,就算达到超时限制了,Deamon仍会在后台尝试登陆。
19.在iOS SDK中,APP进入后台,日志为什么会一输出client连接超时?答:当APP退到后台后,client会与deamon断开连接,并且client还会一直去尝试连接deamon,此时由于APP在后台,
client连接deamon失败,会打印超时错误,一直持续连接请求连接超时错误这个过程,直到APP进入前台,
client与deamon正常创建连接才结束。
20.deamon搜索到了本地的设备,并且与APP过滤的PK相同,但是却回调了一个空的设备列表?答:client采取了一个机制,就是当加载不到设备的JSON文件时,就算搜索到了设备,也不做回调,所以,可能是JSON文件没被成功加载导致的。
21.调用SDK配置接口做配置入网后,SDK接收到配置成功包后,是否还会继续发送配置包?答:会,SDK会一直发送配置包直到达到配置超时时间结束。
22.SDK下发控制指令后,多长时间没回复会认为超时?答:本地设备4s,远程设备20s。
23.大循环登陆设备的时候,实际上已经连不上外网了,但是SDK会有两次回调,一次是可控,一次是在线答:这是正常的,在刚刚断外网的时候,SDK和云端的M2M连接并没有立即关闭,心跳超时才会认为连接关闭,才会上报设备在线。
24.为什么在iOS系统上会出现APP退到后台超过10几秒钟,APP认为设备已经离线的情况?答:在SDK中设置了心跳超时机制,deamon 超过一定时间没有接收到设备的心跳包就认为设备已经离线。而在iOS中,APP一退到后台,deamon就停止了运行,所以就出现了APP退到后台一定时间,设备会被认为离线的问题。 超过超时时间,打开APP,deamon会向client发送一条设备离线的消息,client则立即向APP回调了<didUpdateNetStatus>方法,导致若退出前APP处在设备控制界面,重新进入就会弹出《连接已断开》弹框并退回设备列表现象。
25.SDK回调给APP的sdid与网关上报的sdid不一致?答:网关上报的sdid是十六进制,SDK回调的是十进制。
26. iOS使用了第三方登陆,上架为什么会被驳回?答:使用第三方登陆,必须对没有存在该第三方APP的情况进行判断,否则,会被驳回,提示信息如下:We were required to install the WeChat app before the we could log in via WeChat. Users should be able to log in with WeChat and access their accounts without having to install any additional apps.
25.iOS APP在获取绑定设备列表,出现没有回调现象。答:根据分析:是因为delegate为0导致的。出现delegate为0有两种情况:第一种,APP没有设置代理。第二种,app设置了代理,退出当前页面,对象被释放到了。解决方法:做一个代理监听,或者每次启动页面的时候,都设置一遍代理的方法和属性。
26.iOS的APP如果没有debug日志出来的现象分析:app应该是把日志级别改成none了。
方法:1、从手机日志文件把sdk的debug日志拷贝出来;2、在代码里setLoglevel接口上把日志级别设为All。
27.APP出现能正常下发控制指令,但设备上报却没有功能。解答:先检查代码上有没有做didReceiveData回调接口,然后在检查代码上是否有写向DateMap获取对应数据点状态的方法,并在主线程中执行该方法。 能否实现这样的一个功能:设备采集到不同用户的数据,然后通过app或者微信将数据发送到对应的用户上 为何最近用机智云自动生成的app都编译不过,缺文件,/app/libs/hiflying-iots-android-smartlink7.0.2.jar、/app/libs/libEsptouch_v0.3.3.4_3.jar;增加以后又有别的问题??? 为何最近用机智云自动生成的app都编译不过,缺文件,/app/libs/hiflying-iots-android-smartlink7.0.2.jar、/app/libs/libEsptouch_v0.3.3.4_3.jar;增加以后又有别的问题???
页:
[1]