今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

開發中遇到的問題(二)

開發中遇到的問題,分享給大家,有則改之,無則加勉。#

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 是

NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

所以,為什麼呢,再看看這個 https 鏈接在瀏覽器裡的狀況,顯示的是,證書過期不安全的鏈接。
d. 百度,額,不要吵,確實是百度。。。。

結論:#

是因為測試環境的證書好像是後台自己弄的,然後還過期了,於是就會有這個問題,

解決方法:#

這個點解決方法有三種:
一種是後台更新證書,找一個好的能被信任的證書放過來;
第二種是客戶端改代碼,把不安全的這個給屏掉;但是最好能區分一下是上線還是測試,上線的時候把這些給去掉,要不這個 https 就沒意義了。
最後一種是,大家都不改,測試不要測這個了,反正線上是好的。。。。。😄
不要問我用的哪種。。。。。

如果客戶端要修改的話,參考iOS UIWebView 加載 https 站點出現 NSURLConnection/CFURLConnection HTTP load failed (kCFStreamE...這個,我沒試啊,好像暴露了什麼。。。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。