我的瀏覽器 - 可個(gè)性化的自定義瀏覽器

識(shí)別圖中二維碼下載安裝

背后的歷史故事

說起我的瀏覽器,那是2015年春天剛過完沒多久,正值5月底,依稀還記得那時(shí)我是住在民生路的羽北小區(qū),因?yàn)槟菚r(shí)剛搬去新房子不久,剛在淘寶上買的墻紙與壁畫貼上不久,一個(gè)人在一個(gè)還算蠻溫馨房間里,帶著欣慰的心情獨(dú)自坐一臺(tái)山寨的iMac前,思索著接下來打算做點(diǎn)什么。

01在羽北小區(qū).JPG

記得當(dāng)時(shí)到公司有大半年了,做的不是瀏覽器項(xiàng)目,后來有l(wèi)eader說后期會(huì)讓我做瀏覽器,所以當(dāng)時(shí)就開始研究起了瀏覽器。做瀏覽器,當(dāng)時(shí)有兩種核心組件可并行的用,市面上主流的都是基于UIWebView,因?yàn)榭由伲渤墒煊昧撕芏嗄炅?。部分瀏覽器從iOS8開始采用WKWebView核心,因?yàn)橛肳KWebView核心加載網(wǎng)頁比UIWebView核心快太多。但WKWebView當(dāng)時(shí)作為一個(gè)新事物坑還是比較多的。

2014年10月那次蘋果推出了iOS8,對我來說iOS8有兩個(gè)非常重要的新東西,一個(gè)是WKWebView,一個(gè)是Keyboard Extension??尚业氖俏叶冀佑|了,而且應(yīng)用它們都做了優(yōu)秀的App,而我的瀏覽器就主要基于這個(gè)WKWebView構(gòu)建的。

我的瀏覽器前期也兼容了兩種核心,其實(shí)當(dāng)時(shí)我并沒有想要自己做一款瀏覽器的想法,只是為以研究做瀏覽器,比較好做法是自己寫一個(gè)實(shí)現(xiàn)一遍。心想雖然這樣會(huì)比較累,但這樣對我來說成效是最大的。因?yàn)楫?dāng)前公司的瀏覽器項(xiàng)目確實(shí)有點(diǎn)臃腫,依賴于之上的業(yè)務(wù)也多。所以懷著對自己的信任,為了技術(shù)熱情與理想,重新架構(gòu)設(shè)計(jì),從零開始重新寫一個(gè)輕量的Demo瀏覽器。

當(dāng)時(shí)重新寫時(shí),首先就用UIWebView做了一遍,順便熟悉了WebViewJavascriptBridge的用法,發(fā)現(xiàn)沒有想象的那么困難,因?yàn)槟茉赨IWebView上可做的事情挺多的,都還挺順暢的,也不麻煩,很快就實(shí)現(xiàn)了一個(gè)基于UIWebView的瀏覽器,主要是支持多窗口,有歷史與書簽管理。

后來參考了github諸多案例后,就想做一個(gè)既兼容UIWebView又兼容WKWebView的WebView組件,最后實(shí)現(xiàn)下來,發(fā)現(xiàn)總還是免不了邏輯和代碼變得更復(fù)雜了,變得更加難以維護(hù),問題復(fù)雜化了,后面不斷的功能變更與版本迭代時(shí)問題太多,得不嘗失。做一個(gè)同時(shí)兼容UIWebView和WKWebView的XXWebView組件不合理,成本太高,現(xiàn)在我github的MyBrowser的master分支上還保留著,只是沒維護(hù)了。

不知道什么時(shí)候,可能是熟悉WKWebView后,了解他更多的特性與優(yōu)點(diǎn)后,就比較排斥再用UIWebView了。所以就想著把之前做的半拉子的Demo瀏覽器進(jìn)一步優(yōu)化完善,直至后來新開git分支完全用WKWebView實(shí)現(xiàn),把與UIWebView相關(guān)代碼與邏輯都刪除了。終于解脫了,至少我自己有一個(gè)App不用再在為了UIWebView與WKWebView之間的兼容性來回折騰了。

最后再解釋一下這個(gè)瀏覽器為什么叫『我的瀏覽器』,因?yàn)楫?dāng)時(shí)我做它的時(shí)候,想到的只是給自己做的用的,一時(shí)沒想到特別好的名字,就叫了這個(gè)名字,以突顯這是我的瀏覽器,我的個(gè)性化瀏覽器,那時(shí)多少有一點(diǎn)裝B的意思。

好了,廢話已經(jīng)寫了很多了,下面具體介紹我的瀏覽器吧。

先上幾張瀏覽器的效果圖:

02首頁.PNG
03窗口頁.PNG
04更多設(shè)置頁.PNG

基本功能介紹

我的瀏覽器的特點(diǎn)是極簡、極輕、可自定義。功能多又能體積小,一個(gè)重要原因是基本上不添加第3方庫,所有的功能模塊基本都用系統(tǒng)原生支持的或是自己親手編寫實(shí)現(xiàn)。所以安裝包在5M以內(nèi),即便是3x(3x圖大)屏幕的設(shè)備安裝包也在8M左右。

自動(dòng)全屏

自動(dòng)全屏功能讓我們在看瀏覽內(nèi)容時(shí)能更加全神貫注于內(nèi)容本身;我的瀏覽器在向上滑動(dòng)內(nèi)容時(shí)會(huì)自動(dòng)隱藏頂部導(dǎo)航條與底部工具欄,從而為主體內(nèi)容預(yù)留出更多展現(xiàn)空間。

05自動(dòng)全屏.gif

夜間模式 & 無圖模式

開啟夜間模式可有效降低屏幕亮度保護(hù)我們的眼睛;

06夜間模式.gif

無圖模式可以屏蔽掉網(wǎng)頁中的圖片;

07無圖模式.gif

廣告攔截

廣告攔截讓網(wǎng)頁更干凈;頁面加載更加迅速;

08無廣告攔截.PNG
09有廣告攔截.PNG

多窗口、書簽管理

多窗口、書簽管理、歷史記錄、清除痕跡作為一款瀏覽器必有的功能,所以我的瀏覽器也必須加上了。

10多窗口.PNG
11書簽管理.PNG
12歷史記錄.PNG

掃描二維碼

每想到Safari沒有掃描二維碼的功能,就感覺這是一個(gè)極大的缺陷,瀏覽器沒有掃描二維碼太不方便了。

13掃描二維碼.PNG

網(wǎng)頁截圖

用我的瀏覽器打開網(wǎng)頁后,雙指長按頁面可以對打開的網(wǎng)頁進(jìn)行選取區(qū)域截圖,并可以進(jìn)行分享保存。

13網(wǎng)頁截圖.gif

網(wǎng)頁導(dǎo)出成PDF

有時(shí)候我們想在手機(jī)保存我們?yōu)g覽的網(wǎng)頁,并且適配手機(jī)屏幕,還是一件挺麻煩的事情,而我的瀏覽器就可以輕松的把瀏覽過的網(wǎng)頁導(dǎo)出成pdf文件。

14導(dǎo)出pdf.gif

高級功能介紹

高級功能對于專業(yè)的朋友來說,可做的事情就有很多了,可以更大程度上玩轉(zhuǎn)我的瀏覽器。

強(qiáng)大的ShareExtension

我的瀏覽器的ShareExtension之強(qiáng)大,不但可以將其他App的網(wǎng)址鏈接用我的瀏覽器打開,還支持其他任何格式文件導(dǎo)入到我的瀏覽器,使用我的瀏覽器打開。

15選擇導(dǎo)入到我的瀏覽器.PNG
16開啟我的瀏覽器ShareExtension.PNG
17導(dǎo)入到我的瀏覽器.PNG

比如可以導(dǎo)入音視頻文件放到內(nèi)置的站點(diǎn)上,實(shí)現(xiàn)手機(jī)上在線播放或分享文件給局域網(wǎng)內(nèi)的好友。

18導(dǎo)入視頻.gif

又比如可以把微信或QQ收到的word、excel、ppt、key或pdf等文件用其他應(yīng)用程序打開,選擇我的瀏覽器導(dǎo)入,放到內(nèi)置的站點(diǎn)上供自己或局域網(wǎng)內(nèi)的好友在線瀏覽下載。

19打開word及pdf.gif

自定義首頁配置

我的瀏覽器的配置文件都在web容器的Config目錄下,用戶可以修改HomeContent.json文件內(nèi)容來自定義瀏覽器首頁。打開我的瀏覽器,點(diǎn)擊默認(rèn)首頁上的『Web Server』,即可打開Web容器的主目錄,主目錄下默認(rèn)有一個(gè)Config文件夾。

首頁的展示的數(shù)據(jù)來源于HomeContent.json,每一項(xiàng)UI對應(yīng)于HomeContent.json的數(shù)據(jù)項(xiàng),類型支持4種,分別為:TextIcon,Text,Search,WebServer。

通過Web DAV或者Web Uploader上傳自定義的HomeContent.json文件替換掉Config目錄中老的Homecontent.json文件即可自定義瀏覽器首頁。(注意這里要確保json文件格式正確哦)

20Config目錄首頁配置文件.PNG
21HomeConfig配置文件.png

自定義廣告攔截的規(guī)則

我們可以在web容器的Config目錄下修改AdblockRules.txt文件內(nèi)容來添加或修改廣告攔截的規(guī)則,修改規(guī)則后重啟瀏覽器即可馬上生效;建意攔截規(guī)則不要添加太多,超過3萬條就會(huì)影響網(wǎng)頁的加載速度或部分網(wǎng)頁的會(huì)被誤攔截。

完整版的EasyList中國區(qū)規(guī)則列表 https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt

撰寫 Adblock Plus 過濾規(guī)則,可參考:https://adblockplus.org/filters

內(nèi)置靜態(tài)WebServer

默認(rèn)的首頁有個(gè)打開WebServer的入口,那個(gè)『Web Server』鏈接項(xiàng)就是了。內(nèi)置靜態(tài)的WebServer,支持在手機(jī)上搭建簡單的靜態(tài)web站點(diǎn)。我們可向Web容器上傳或?qū)胛募蛭募A。

22打開WebServer分享目錄.PNG
23打開WebServer.PNG

內(nèi)置的Web Uploader

內(nèi)置的Web Uploader 可以直接在瀏覽器里管理Web容器里的文件,包括上傳文件到Web容器,或移動(dòng)、刪除或新建文件夾等操作。

使用Web Uploader,我們可以在手機(jī)上添加、移動(dòng)、刪除及重名命文件夾,也可以上傳、移動(dòng)、刪除及重命名文件。

24WebUploader.gif

內(nèi)置Web DAV

想必用過FTP的朋友應(yīng)該也聽說過Web DAV,與FTP的功能類似。通過Web DAV,可以更方便快捷實(shí)現(xiàn)從電腦上傳或下載文件到web容器。我的瀏覽器的WebDAV啟動(dòng)后,默認(rèn)端口是8081。

Windows上WebDAV客戶端可以使用NetDrive、AnyClient,Mac上可以使用Transmit。下面來一張?jiān)贛ac上使用Transmit 通過 WebDAV 連接到手機(jī)上的『我的瀏覽器』的Web容器目錄的操作演示。

25WebDAV.gif

關(guān)注微信

weichat_qrcode.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容