1.小功能
這期的產(chǎn)品安卓新版本要上一個小功能搀崭,就是在已經(jīng)安裝J應用的手機上叨粘,點擊廣告能夠跳轉(zhuǎn)打開該J應用猾编。
2.測試
作為QA思考了下這個測試應該不會很麻煩,因為只是配置廣告跳轉(zhuǎn)鏈接(該鏈接是J應用提供的合作廣告地址)升敲,然后點擊廣告看是否能啟動J應用即可答倡。
也就是主要的測試點為:
新版本,手機已安裝J應用驴党,點擊廣告跳轉(zhuǎn)瘪撇;
新版本,手機未安裝J應用港庄,點擊廣告跳轉(zhuǎn)倔既;
老版本,點擊廣告跳轉(zhuǎn)鹏氧。(后臺未做版本控制叉存,新老版本返回相同廣告數(shù)據(jù))
因為我們的產(chǎn)品有許多廣告位置,是否每個廣告位置都要配置一遍看一下呢度帮。不太確定歼捏,今天開發(fā)請假了,來看下代碼確認下實現(xiàn)邏輯吧笨篷⊥啵看這部分邏輯是實現(xiàn)在廣告處理部分還是統(tǒng)一的webview部分。
3.代碼實現(xiàn)
拿到開發(fā)GG的代碼率翅,可以看到是在Webview部分做了統(tǒng)一處理练俐。長舒一口氣,可以不用配置所有的廣告位置廣告了冕臭。
核心代碼非常簡單:
if (url.startsWith("ourschemeurl://")) {
try {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri uri = Uri.parse(url);
intent.setData(uri);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
在shouldOverrideUrlLoading()攔截回調(diào)URL方法里增加了一個對J應用scheme的判斷腺晾,只要符合J應用的schemeUrl,就調(diào)起J應用辜贵。
所以我們之前列的測試點是ok的悯蝉。
4.疑惑:為什么抓包沒有看到scheme
我用老版本配置了相同的廣告,點擊廣告跳轉(zhuǎn)抓包一直沒有看到相關scheme發(fā)出托慨,疑惑這樣客戶端是如何攔截到這個scheme鼻由,然后處理的呢?
其實scheme并不是一種http請求厚棵,所以用fiddler等抓包工具是抓不到的蕉世,這時候如果看安卓日志的話,在日志中是可以看到url中帶的scheme信息的婆硬。
5.查漏補缺:關于webview和調(diào)起第三方app
安卓的webview:
參考文章:http://www.reibang.com/p/3c94ae673e2a
http://blog.csdn.net/carson_ho/article/details/64904691
調(diào)起第三方app:
參考文章:http://www.jb51.net/article/64819.htm
三種方法概括:通過包名狠轻、自定義action、scheme(我們實現(xiàn)就是第三種方法)
(有個疑問彬犯,為什么可以通過scheme調(diào)起第三方app呢向楼?其實每個app都可以設置自己的scheme供他人來調(diào)起查吊,可參考文章http://www.reibang.com/p/45af72036e58)
使用瀏覽器打開第三方app:
參考文章:http://www.reibang.com/p/1cd02fe1810f
6.小結(jié)
看代碼實現(xiàn)對于測試還是蠻重要的,可以看別人的代碼了解問題的實現(xiàn)方式蜜自,進而思考這種實現(xiàn)方式可能存在的問題菩貌,同時也避免掉一些無意義的測試點卢佣,使得測試更精準重荠,更高效。
另外虚茶,一個困擾自己超過1個小時的問題有必要整理下來戈鲁,這篇小文章不過用了20分鐘整理,但是積累多了不也是寶貴的財富咩嘹叫。