美文网首页
记一次webview页跳转第三方APP的测试

记一次webview页跳转第三方APP的测试

作者: 隋胖胖LoveFat | 来源:发表于2017-10-12 15:20 被阅读314次

    1.小功能

    这期的产品安卓新版本要上一个小功能,就是在已经安装J应用的手机上,点击广告能够跳转打开该J应用。

    2.测试

    作为QA思考了下这个测试应该不会很麻烦,因为只是配置广告跳转链接(该链接是J应用提供的合作广告地址),然后点击广告看是否能启动J应用即可。
    也就是主要的测试点为:
    新版本,手机已安装J应用,点击广告跳转;
    新版本,手机未安装J应用,点击广告跳转;
    老版本,点击广告跳转。(后台未做版本控制,新老版本返回相同广告数据)
    因为我们的产品有许多广告位置,是否每个广告位置都要配置一遍看一下呢。不太确定,今天开发请假了,来看下代码确认下实现逻辑吧。看这部分逻辑是实现在广告处理部分还是统一的webview部分。

    3.代码实现

    拿到开发GG的代码,可以看到是在Webview部分做了统一处理。长舒一口气,可以不用配置所有的广告位置广告了。
    核心代码非常简单:

    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()拦截回调URL方法里增加了一个对J应用scheme的判断,只要符合J应用的schemeUrl,就调起J应用。
    所以我们之前列的测试点是ok的。

    4.疑惑:为什么抓包没有看到scheme

    我用老版本配置了相同的广告,点击广告跳转抓包一直没有看到相关scheme发出,疑惑这样客户端是如何拦截到这个scheme,然后处理的呢?
    其实scheme并不是一种http请求,所以用fiddler等抓包工具是抓不到的,这时候如果看安卓日志的话,在日志中是可以看到url中带的scheme信息的。

    5.查漏补缺:关于webview和调起第三方app

    安卓的webview:
    参考文章:http://www.jianshu.com/p/3c94ae673e2a
    http://blog.csdn.net/carson_ho/article/details/64904691

    调起第三方app:
    参考文章:http://www.jb51.net/article/64819.htm
    三种方法概括:通过包名、自定义action、scheme(我们实现就是第三种方法)
    (有个疑问,为什么可以通过scheme调起第三方app呢?其实每个app都可以设置自己的scheme供他人来调起,可参考文章http://www.jianshu.com/p/45af72036e58

    使用浏览器打开第三方app:
    参考文章:http://www.jianshu.com/p/1cd02fe1810f

    6.小结

    看代码实现对于测试还是蛮重要的,可以看别人的代码了解问题的实现方式,进而思考这种实现方式可能存在的问题,同时也避免掉一些无意义的测试点,使得测试更精准,更高效。
    另外,一个困扰自己超过1个小时的问题有必要整理下来,这篇小文章不过用了20分钟整理,但是积累多了不也是宝贵的财富咩。

    相关文章

      网友评论

          本文标题:记一次webview页跳转第三方APP的测试

          本文链接:https://www.haomeiwen.com/subject/koxoyxtx.html