2014年,為了方便第三方開發者能夠呼叫本地的一些功能,我們提供了一套js-sdk。通過呼叫我們的介面,開發者可以定製UI,獲取當前的手機狀態,呼叫支付,黃頁掃一掃功能,為使用者提供更加優質的體驗。下面來分幾個主題總結下
1.前期調研
我們給的定位就是web端需要呼叫本地的一些功能,簡單的定製UI。
開始我們主要就是參考微信,那個時候微信還沒有開放js 介面,只提供了一些定位,判斷網路狀態,隱藏頂部和底部的一些小功能。微信是將js植入到webview 裡面去了,只要開啟webview 的時候,這個js 就自動的載入了。我們也採取這種形式,由客戶端主動的將js load進去,web 開發的同學不需要再次引入了,直接使用我們的api 就可以了。另外作為一個特殊的webview,我們也給UA 加上了 MiuiYellowPage,來和其他的webview區別開來。
2.設計介面
在這塊我們主要是考慮易用,易擴充套件、方便維護。前端的程式碼儘量少,客戶端如果新增加介面,前端也不用去新增加程式碼,就直接可以使用客戶端的方法,當然在使用之前,我們需要檢查是否支援客戶端的方法。
到現在為止我們將介面分為8大類:
1).基礎類介面
主要是判斷是否支援某一個介面
2).支付類介面
接入了我們的小米支付和支付寶快捷支付功能
3).裝置介面
判斷是聯網還是斷網的
4).分享介面
目前主要是分享微博功能,後期我們考慮新增分享微信
5).介面操作類介面
主要是設定title,隱藏底部工具條
6).地理位置
獲得當前的地理位置
7).監聽類介面
檢測homepress鍵是否點選
8).掃一掃介面
掃描二維碼和條形碼
因此我們需要一種訊息管理,事件管理,檢測本地能力,自動mix同步客戶端方法等4種機制。
3.安全性
考慮到一些內部的一些方法不能被第三方使用,我們分成了2個不同的Fragment,一些公用的方法寫成了base,現在的做法是通過域名去控制內部和第三方的。
4.介面測試
測試分為2個部分,本地測試和線上真機除錯。
對於本地除錯:我們寫了一個測試頁面。每一個功能就是一個按鈕,我們通過點選按鈕的形式去測試功能的正確性。
如下圖:
線上真機除錯:我們開啟了一個電話號碼908888880010,撥打這個號碼,就自動識別為webview 的測試,點選詳情頁,就能看到測試頁面,進入測試頁面,我們就能夠看到我們所有的功能。
如下圖:
5.文件編寫
主要分為對內和對外文件。
對內,客戶端的同學使用javadoc 生成了一套native 端的一些方法,主要客戶端有方法新增,就自動執行下,然後方法也有了。web這邊能及時的看到。
對外,主要是方便第三方開發者使用,我們寫了一個入門教程。在使用的過程中,也發現開發者不停的提出一些問題,我們都放到了FAQ裡面去了。