ios 移动的上的Web-从Chrome自定义选项卡或Safari ViewController导航时,在完整的浏览器应用程序中打开URL

xpcnnkqh  于 2023-06-25  发布在  iOS
关注(0)|答案(2)|浏览(84)

我有一个网页,经常从Android/iOS应用程序内部启动,在各自的“标签系统”,Chrome自定义标签/ SFSafariViewController。
我的要求是在完整的浏览器应用程序中重定向和打开一些URL,而不是在标签/控制器中导航。
我试着在其中一个URL中添加hreftarget="_blank" or use window.open()`,但在Android中,至少这会在现有标签中打开一个自定义标签。到目前为止还没有机会在iOS上测试它,但我偷偷怀疑它不会做任何事情,因为Safari View Controller不支持Windows。
任何想法,我可以迫使这两个工具打开一个网址在完整的应用程序将不胜感激。
谢谢

qij5mzcb

qij5mzcb1#

Twitter和whatsapp在CCT和SVC中打开网页,但FB messenger没有,因为它在应用内浏览器(IAB)中打开,除非您更改手机设置。
但是。我找到了这个JavaScript,它对我很有效,适用于iPhone上的safari和android上的chrome。把它放在你的索引页的开头,在你的标题的末尾,并引用这个相同的索引页。当然,把你的网页改成你自己的页面。

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
  }
}
kqlmhetl

kqlmhetl2#

对于那些可能会遇到这个并感兴趣的人。
不幸的是,无法强制应用程序浏览器在完整版本中打开新标签。就像我在问题中提到的,由于SFSafariViewController的性质,iOS根本无法做到这一点,而在Android中,它无法工作。原因我猜,找不到具体的东西,我不会去猜测的原因。
最后我在我这边使用的解决方案是:如果站点向应用发送一个深层链接,并包含应用应在外部打开的URL,则应用会强制关闭应用内浏览器,并在完整浏览器中启动接收到的URL。
我把这个作为现在的答案。如果有人提出更好的解决方案或立即解决问题的方案,我非常乐意改变它。
干杯

相关问题