我正在开发网络应用程序并且我使用Facebook分享我的内容,我面临的问题是当有人点击Facebook上发布的链接有时它会在应用程序浏览器中使用Facebook打开并导致许多问题
有没有办法阻止Facebook查看我的链接并改用设备默认浏览器?
答案 0 :(得分:7)
我无法让我的js动态网格在Facebook应用内浏览器中运行,但我无法让用户知道出现了什么问题以及他们需要打开在真实的浏览器中。
我使用js检测Facebook应用程序内浏览器,并尝试使用js提醒通知用户他们需要在Safari中打开,但警报不能始终如一地工作或可靠使用Facebook应用程序内浏览器。
我发现重定向到用户警报页面是最可靠的解决方案。它可以根据需要显示(模态等)包含重定向的代码示例。请注意,重定向页面仍保留在Facebook浏览器中 - 只有用户交互才能突破。我使用我的重定向页面告诉人们使用'分享>在Safari'开放功能。
当用户点击“在Safari中打开”时,重定向页面会在Safari中重新加载,检测到它现在不在Facebook应用内浏览器中,并自动将用户重定向回页面首先想要,但不再是在Facebook应用程序内浏览器中。 A"一键式"解决方法是让用户退出该应用内浏览器。
最好的解决方案仍然是我的js网格“只是工作'有一天在Facebook浏览器中。如果有人弄明白,请告诉我。
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) && (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
window.parent.location.assign("https://yourdomain.com/redirect_page/index.html");
}
</script>
答案 1 :(得分:2)
完全取决于用户,没有办法强制在默认浏览器中打开它。此主题中有更多信息(和一些答案):File upload control not working in Facebook In-App Browser
答案 2 :(得分:0)
基于麦克贝斯
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>
答案 3 :(得分:0)
或者...不那么复杂。为什么只使用一个名为isFacebookApp()的函数,为什么只在查找FB应用程序内浏览器时将Opera定位为目标?
<script>
var ua = navigator.userAgent;
if (ua.indexOf("FBAN") != -1 || ua.indexOf("FBAV") != -1) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>
不过谢谢你们俩。这让我发疯。我的主要问题是在Android上放大字体。现在,我发现使用fontsz = Math.round(fontsz * .7)进行还原非常适合抵消(检测到FB应用程序时)
答案 4 :(得分:0)
我发现Android将通过外部浏览器打开Firebase Dynamic Links,无论该网址发布在哪种Web视图中。
我在https://stackoverflow.com/a/56143217/3000586上写了更详细的描述。