移动网络 - 从 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 到完整的浏览器。

我暂时将此设置为答案。如果有人提出更好的解决方案或立即解决问题,我很乐意更改它。

干杯