移动网络 - 从 Chrome 自定义选项卡或 Safari ViewController 导航时,在完整的浏览器应用程序中打开 URL
Web on mobile - Open URLs in full browser apps when navigating from Chrome Custom Tabs or Safari ViewController
我有一个网页,该网页经常从 Android/iOS 应用程序中各自的“选项卡系统”Chrome 自定义选项卡/SFSafariViewController 中启动。
我的要求是让一些 url 重定向并在完整的浏览器应用程序中打开,而不是在 tab/controller.
中导航
我尝试将 href
target="_blank" or use
window.open()` 添加到其中一个 URL,但至少在 Android 中会在现有的标签。到目前为止还没有机会在 iOS 上进行测试,但我暗暗怀疑它不会执行任何操作,因为 Safari View Controller 不支持 windows.
任何关于如何强制这 2 个工具在完整应用程序中打开 url 的想法将不胜感激。
谢谢。
Twitter 和 whatsapp 在 CCT 和 SVC 中打开网页,但 FB Messenger 不会,因为它在其 in-app-browser (IAB) 中打开,除非您更改 phone 设置。
但是。我发现这个 javascript 对我有用,适用于 iphone 上的 safari 和 android 上的 chrome。将它放在 header 末尾的索引页的开头,并引用同一索引页。
当然把yourwebpagetoopenoutsidewbhere改成你自己的页面。
var standalone = window.navigator.standalone,
userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test(userAgent),
ios = /iphone|ipod|ipad/.test(userAgent);
var qq;
if (ios) {
if (!standalone && safari) {
// Safari
} else if (!standalone && !safari) {
// iOS webview
s=location.toString().split('?');s=s[1];
qq="https://www.yourwebpagetoopenoutsidewbhere.com/index.php?" + s;
window.close(); // Close the empty view window
window.open(qq,'_system', 'location=yes', replace);
}
} else {
if (userAgent.includes('wv')) {
// Android webview
s=location.toString().split('?');s=s[1];
qq="https://www.yourwebpagetoopenoutsidewbhere.com/index.php?" + s;
window.close(); // Close the empty view window
var winloc = 'intent:' + qq + '#Intent;end';
window.location = winloc;
} else {
// Chrome
}
}
对于可能遇到此问题并感兴趣的人。
遗憾的是,无法强制应用内浏览器在完整版中打开新标签页。就像我在他的问题 iOS 中提到的那样,由于 SFSafariViewController
的性质,它根本无法做到这一点,而在 Android 中它不起作用......出于我猜的原因,不能找到一些具体的东西,我不会去猜测原因。
我最终使用的解决方案是:
让网站向应用程序发送深度 link 和应该在外部打开的 URL,然后应用程序关闭应用程序内浏览器并启动接收 URL 到完整的浏览器。
我暂时将此设置为答案。如果有人提出更好的解决方案或立即解决问题,我很乐意更改它。
干杯
我有一个网页,该网页经常从 Android/iOS 应用程序中各自的“选项卡系统”Chrome 自定义选项卡/SFSafariViewController 中启动。
我的要求是让一些 url 重定向并在完整的浏览器应用程序中打开,而不是在 tab/controller.
中导航我尝试将 href
target="_blank" or use
window.open()` 添加到其中一个 URL,但至少在 Android 中会在现有的标签。到目前为止还没有机会在 iOS 上进行测试,但我暗暗怀疑它不会执行任何操作,因为 Safari View Controller 不支持 windows.
任何关于如何强制这 2 个工具在完整应用程序中打开 url 的想法将不胜感激。
谢谢。
Twitter 和 whatsapp 在 CCT 和 SVC 中打开网页,但 FB Messenger 不会,因为它在其 in-app-browser (IAB) 中打开,除非您更改 phone 设置。
但是。我发现这个 javascript 对我有用,适用于 iphone 上的 safari 和 android 上的 chrome。将它放在 header 末尾的索引页的开头,并引用同一索引页。 当然把yourwebpagetoopenoutsidewbhere改成你自己的页面。
var standalone = window.navigator.standalone,
userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test(userAgent),
ios = /iphone|ipod|ipad/.test(userAgent);
var qq;
if (ios) {
if (!standalone && safari) {
// Safari
} else if (!standalone && !safari) {
// iOS webview
s=location.toString().split('?');s=s[1];
qq="https://www.yourwebpagetoopenoutsidewbhere.com/index.php?" + s;
window.close(); // Close the empty view window
window.open(qq,'_system', 'location=yes', replace);
}
} else {
if (userAgent.includes('wv')) {
// Android webview
s=location.toString().split('?');s=s[1];
qq="https://www.yourwebpagetoopenoutsidewbhere.com/index.php?" + s;
window.close(); // Close the empty view window
var winloc = 'intent:' + qq + '#Intent;end';
window.location = winloc;
} else {
// Chrome
}
}
对于可能遇到此问题并感兴趣的人。
遗憾的是,无法强制应用内浏览器在完整版中打开新标签页。就像我在他的问题 iOS 中提到的那样,由于 SFSafariViewController
的性质,它根本无法做到这一点,而在 Android 中它不起作用......出于我猜的原因,不能找到一些具体的东西,我不会去猜测原因。
我最终使用的解决方案是: 让网站向应用程序发送深度 link 和应该在外部打开的 URL,然后应用程序关闭应用程序内浏览器并启动接收 URL 到完整的浏览器。
我暂时将此设置为答案。如果有人提出更好的解决方案或立即解决问题,我很乐意更改它。
干杯