我开发了一个适用于 iOS 和 Android 的应用程序,它使用应用程序内浏览器 (Webview) 从我的网络服务器访问 HTML 文件。
我不希望用户可以在不使用该应用程序的情况下访问此文件。是否有可能检测用户是否使用应用程序或直接通过此智能手机/平板电脑/计算机上的浏览器访问文件?我认为使用 PHP 的解决方案要好得多,因为可以关闭 Javascript。至少 Google Analytics 可以区分 Safari 和 Safari(应用内)。它应该适用于 iOS 和 Android 的每个版本。
感谢您的帮助。
Solution
经过多次尝试,我终于找到了适合我的解决方案!
iOS:您可以使用用户代理检测 Safari 和应用内浏览器之间的差异。可能有更好的解决方案,但它有效。
// Safari (in-app)
if ((strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile/') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari/') == false) {
echo 'Safari (in-app)';
}
Android:应用程序的包名称存储在 PHP 变量中$_SERVER['HTTP_X_REQUESTED_WITH']
.
// Android (in-app)
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app") {
echo 'Android (in-app)';
}
正如 Tim van Elsloo 已经指出的那样,HTTP 标头可以被伪造,这并不是绝对安全的。
我不确定 Android 的情况,但是当你使用 iOS SDK 时UIWebView
,它会发送应用程序的名称和版本作为用户代理的一部分(YourApp/1.0
).
然后,您可以使用 PHP 检查您的应用内 Webview 是否正在使用:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'YourApp/') !== false)
我认为 Android 也做了类似的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)