开发中遇到的问题,分享给大家,有则改之,无则加勉。
1. UIScrollView加了category之后导致的手写输入时崩溃的问题—— [UIKBBlurredKeyView candidateList]
上周更新的应用,这周上线了,然后昨天旁边的同事告诉我说,友盟上的崩溃信息,崩溃率1%点多了,赶紧查查吧。
看了一下发现大部分的崩溃都是这个日志:[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance…,于是搜了一下
崩溃重现:
切换到有输入的地方,点击输入,切换输入法到手写输入法(系统的,第三方的没事),然后输入,输入一个之后,第二个字就会崩溃。
原因:
是因为给UIScrollView加了个category,是用于处理点击屏幕的事件的(触摸屏幕回收键盘),之前一直都是这么做的,也没问题,又或者又问题也没人反馈,😓,估计是投诉无门啊。。。。。而且我们测试的时候也没有测试手写输入法,因为没人会想到这还会有什么不同。苹果自己也没想到,所以我们就上线了,然后就有崩溃了。。。这坑爹的
解决:
既然有这个问题,就要解决,而且用了这个category之后,最坑的地方在于,即使你没有导入这个头文件,在其他输入的地方也有可能会跟这个冲突,从而崩溃。。。所以问题还是很严重地!!!
解决的方法很简单,删掉这个category,换种方式实现回收键盘,具体参照这个博客[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance 0x177cc850,我就是这么改的。
2. webView加载网页时出现了这个,NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
昨天给一个界面,新增一个入口,点击跳转一个网页,需要把登陆状态带到网页里,做好之后,今天提测,测试发现跳转的网页没问题,但是不能添加到购物车,点击网页下面标签中的个人中心没反应。。。
定位原因:
看看安卓的显示如何,是否能跳转,都正常。。。。。
然后开始排查,
a. 是不是登陆状态没有传到网页里;
b. 是不是手机的问题,这个网址直接从浏览器能否打开
这两个排除之后,没办法,
c. 单步来打印,看看能够正常跳转的网址和不能跳转的有什么不一样。
还真有不一样的地方,能够正常跳转的都是http的请求,而个人中心的本来也是http的,但是请求之后有一次重定向(自动跳转),到https的;然后就出问题了,走的webview加载失败的方法,打印的error是
1 | NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) |
so,为什么呢,再看看这个https链接在浏览器里的状况,显示的是,证书过期不安全的链接。
d. 百度,额,不要吵,确实是百度。。。。
结论:
是因为测试环境的证书好像是后台自己弄的,然后还过期了,于是就会有这个问题,
解决方法:
这个点解决方法有三种:
一种是后台更新证书,找一个好的能被信任的证书放过来;
第二种是客户端改代码,把不安全的这个给屏掉;但是最好能区分一下是上线还是测试,上线的时候把这些给去掉,要不这个https就没意义了。
最后一种是,大家都不改,测试不要测这个了,反正线上是好的。。。。。😄
不要问我用的哪种。。。。。
如果客户端要修改的话,参考iOS UIWebView 加载https站点出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamE…这个,我没试啊,好像暴露了什么。。。