[英]Get ANR dialog when open links from WebView in Chrome custom tabs. How do I debug this?
[英]Web on mobile - Open URLs in full browser apps when navigating from Chrome Custom Tabs or Safari ViewController
我有一个 web 页面,该页面通常在各自的“选项卡系统”Chrome 自定义选项卡/SFSafariViewController 中从 Android/iOS 应用程序内部启动。
我的要求是让一些 url 重定向并在完整的浏览器应用程序中打开,而不是在选项卡/控制器中导航。
我尝试向这些 URL 之一添加href
target="_blank" or use
window.open()` 但至少在 Android 中会在现有选项卡内打开一个自定义选项卡。 到目前为止还没有机会在 iOS 上进行测试,但我暗暗怀疑它不会执行任何操作,因为 Safari 视图 Controller 不支持 windows。
任何关于如何强制这 2 个工具在完整应用程序中打开 url 的想法将不胜感激。
谢谢。
Twitter 和 whatsapp 在 CCT 和 SVC 中打开网页,但 FB Messenger 不会,因为它在其应用内浏览器 (IAB) 中打开,除非您更改手机设置。
但。 我发现这个 javascript 对我有用,iphone 上的 safari 和 android 上的 chrome。把它放在 header 末尾的索引页的开头,并参考同一个索引页。 当然,将您的网页更改为在此处以外打开到您自己的页面。
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 中它不起作用......由于我猜的原因,找不到具体的东西,我不会 go 推测原因.
我最终在我这边使用的解决方案是:让网站发送一个深层链接到应用程序 URL 如果它应该在外部打开,应用程序然后关闭应用程序浏览器并启动接收 URL 到完整的浏览器。
我暂时将此设置为答案。 如果有人提出更好的解决方案或立即解决问题,我很乐意更改它。
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.