我和我的团队将开发这个原生的Android应用程序,它基本上是特定移动网站的WebView包装器,实现了几个本机功能。
网站上会有一个标语来宣传原生应用。但是当用户已经在使用本机应用程序时显示此横幅没有任何意义,所以我们必须摆脱它。
我的第一种方法是将一些Javascript注入WebView,它将查找HTML元素并更改其可见性。很简单。但对于这样的事情,这是最佳/推荐的方法吗?
如果网站开发人员检测网站是否通过原生应用程序显示并且根本不显示横幅,那么可能会更好。是?你会怎么建议这样做?
答案 0 :(得分:1)
有几种方法......
您可以要求主站点的开发人员创建一个名为hideAd()
的Javascript函数,然后您可以在使用webView.loadUrl("javascript:hideAd()")
加载页面后调用该函数。
您可以创建仅存在于本机应用程序中的界面,网页可以查询该界面以确定它是否在应用程序中运行。在Java端使用webView.addJavascriptInterface(new MyJSJavaBridge(), "nativeapp");
,然后使用if (window.nativeapp)...
检查Javascript中的界面。
您可以更改用户代理字符串,使用webView.getSettings().setUserAgentString("<old agent string plus some custom id>");
为您的应用附加一些唯一标识符,然后让JS代码查询用户代理字符串。
可能还有很多其他选择,这些只是其中的一部分。我说最简单的可能就是在用户代理上附加一些唯一的id。