闊別1年半之久,一個JavaScript和ios通訊的想法終於被實現了(我不知道別人有沒有早就實現過~)。
記得早期ios內嵌html做通訊時,貌似做好的辦法只能是 ios通過url來截取頁面發送消息,但是這樣一來如果頁面框架對url的依賴比較高那么就會出問題,並且頻繁改url,ios可能並不能攔截到每次的url。
一個老外寫了一套利用該方法實現的js與ios通訊的庫,原理基本還是如此。不過貌似做了優化,url的變換不在webview里,而是再后端跑了一個webview專門處理url的變化,我沒有深入研究。這樣雖然解決了一部分問題,但是對於我來說聽上去就不怎么舒服。
后來在於ios的合作中聽說,javascript發起的alert方法,ios可以重寫。當時就一個機靈,那干嘛不把alert重寫成能接受消息的入口呢?這樣一來只要商定好消息模式(比如alert一個參數代表普通alert,多個代表消息),這樣一來,js不就能直接和ios通訊了嗎?ios端只要注冊多中方法來處理通訊消息就可以了。
由於我基本沒有涉獵ios,所以當時找人印證,不過有的說不能實現,有的說有問題,有的也說可以實現但是最終也沒給我實現。。。。 再后來ios7出來后,聽說原來的alertview方法變了,當時就覺得快放棄了。
事情擱置到今天,終於我們ios部門一個經理聽了我的想法,非常認同的覺得可以一試。我說了ios7的顧慮,他說只是換了個方法而已。沒多久,我前后等了1年半的通訊協議終於實現了!而且驗證可以,優缺點我就不說了,大家一想便知!特記錄下來紀念!
無比的后悔當初沒研究下ios。