Ionic 3 iOS端强制用设备浏览器打开Twitter链接求助
解决Ionic 3 iOS端强制用设备浏览器打开Twitter链接的问题
我之前做Ionic项目时也碰到过一模一样的iOS端问题——用户装了Twitter App就会被强制跳转到App里要求登录,明明只是想看看页面却要走登录流程,体验确实糟透了。试过几个方法后,终于找到能稳定实现始终用设备默认浏览器打开的方案,分享给你:
方法1:正确配置InAppBrowser插件(最可靠)
首先确保你已经安装了@ionic-native/in-app-browser插件,然后调整调用方式,重点是指定_system目标和额外参数,强制系统用外部浏览器打开:
import { InAppBrowser } from '@ionic-native/in-app-browser'; // 在你的页面/服务类里注入插件 constructor(private iab: InAppBrowser) {} // 打开公司Twitter页面的方法 openCompanyTwitter() { // 关键是第二个参数设为'_system',第三个参数添加openExternal: 'yes' const browser = this.iab.create( 'https://twitter.com/mycompany', '_system', { location: 'yes', // 显示浏览器地址栏(可选) openExternal: 'yes', // 强制触发外部浏览器打开 clearcache: 'yes', clearsessioncache: 'yes' } ); }
方法2:修改config.xml的Intent配置
有时候iOS的系统Intent会自动拦截Twitter链接跳转到原生App,你可以在项目根目录的config.xml里添加针对性配置,强制外部打开:
<!-- 允许应用导航到Twitter域名 --> <allow-navigation href="https://twitter.com/*" /> <!-- 强制用外部浏览器打开Twitter链接,阻止跳转到原生App --> <allow-intent href="https://twitter.com/*" launch-external="true" />
如果之前有全局的<allow-intent href="https://*/*" />配置也可以保留,上面的针对性规则会优先生效。
方法3:直接用window.open(备选方案)
如果InAppBrowser还是有异常,可以试试原生的window.open,加上特定参数绕过App拦截:
openTwitterPage() { window.open( 'https://twitter.com/mycompany', '_blank', 'noopener,noreferrer,location=yes,toolbar=yes' ); }
为什么之前用InAppBrowser没生效?
大概率是调用时没指定_system目标,或者参数配置不对。默认用_blank的话,iOS可能还是会触发App跳转逻辑,而_system明确告诉系统要使用外部浏览器。
亲测这几个方法在iOS 12+的设备上都能稳定生效,不管用户有没有装Twitter App,都会直接打开设备默认浏览器加载页面,不用再被迫登录啦!
内容的提问来源于stack exchange,提问作者tala9999
相关产品推荐
相关产品推荐

