简而言之:是否可以将访问者重定向到自定义 URI 方案,或者在不支持该方案的情况下显示一些内容?
我的具体用例是,我正在创建一个注册自定义 URI 方案的移动应用程序,以便用户可以通过短信或电子邮件发送链接来邀请其他用户执行应用程序内的某些操作。
这些链接指向我的服务器(在 Apache 上运行 PHP),服务器将访问者重定向到正确的方案。只要这就是重定向页面的全部功能,这就可以完美地工作,但我希望能够显示一些内容,以防在计算机或未安装我的应用程序的其他设备上打开电子邮件。
我试图通过以下方式实现这一目标这些 JavaScript 技巧 https://stackoverflow.com/questions/24571548/javascript-how-to-detect-if-the-custom-url-scheme-is-available-or-not-availabl以及提供 Location 标头和服务器上 PHP 脚本的内容。两者都不起作用。我也尝试过使用<meta http-equiv="Location" content="myscheme://testing">
页面上的标签,但这也没有做任何事情。
有些人建议使用用户代理嗅探来查看客户端使用的是移动浏览器还是桌面浏览器。我已经在进行此操作以及初步检查,但仍然有可能在未安装我的应用程序的移动设备上打开链接,而这些人将留下一个空白页面。
有什么办法可以实现这一点,还是我运气不好?
修改后的版本,原始版本在底部:
为了让事情变得快速和干净,我决定保留重定向页面。此外,我认为重定向页面不应保留在浏览器的历史记录中以避免永无休止的后退按钮惨败 https://stackoverflow.com/a/506004/1697755。因此我最终得到了这个版本:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Redirecting...</title>
<script>
var redirectToApp = function() {
setTimeout(function appNotInstalled() {
window.location.replace("http://example.com/app-not-installed");
}, 100);
window.location.replace("myscheme:someaction");
};
window.onload = redirectToApp;
</script>
</head>
<body></body>
</html>
原答案:
经过一番摆弄后,我发现这实际上可以用 Javascript 实现。我只需要把它变得比我所拥有的更简单一点:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to my app</title>
<script>
var redirectToApp = function() {
document.location = 'myscheme:someaction';
};
window.onload = redirectToApp;
</script>
</head>
<body>
You don't have the app installed.
</body>
</html>
这正是我所需要的。不幸的是,当无法完成重定向时,它确实会在 Javascript 控制台中导致错误,但我想我只能忍受这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)