Ionic Cordova iOS应用如何实现在Microsoft Edge浏览器中打开链接?
解决Ionic Cordova iOS应用跳转至Microsoft Edge浏览器的问题
我完全理解你的困扰——想让Ionic Cordova开发的iOS应用里的链接直接跳转到Microsoft Edge,而非InAppBrowser或系统默认浏览器,试了多种方案却没效果。下面我一步步帮你排查和解决:
1. 确认Info.plist的URL Scheme配置是否正确
iOS 9及以上版本要求,调用外部应用的URL Scheme前,必须在Info.plist里声明允许查询的Scheme,否则系统会直接阻止调用。你需要补充以下配置:
打开项目的platforms/ios/[你的应用名]/Info.plist,添加这段XML代码:
<key>LSApplicationQueriesSchemes</key> <array> <!-- 声明允许查询Microsoft Edge的Scheme --> <string>microsoft-edge</string> <string>microsoft-edge-https</string> </array>
修改后记得重新构建iOS项目,确保配置生效。
2. 修正Edge Scheme的调用格式
你当前的代码window.open('microsoft-edge:'+ 'https://google.com' ,'_blank')格式有误,Microsoft Edge的正确调用需要使用microsoft-edge://open?url=前缀,并且要对目标URL进行编码(避免特殊字符导致跳转失败)。
替换成以下代码:
// 对目标URL进行URI编码,避免特殊字符干扰 const targetUrl = encodeURIComponent('https://google.com'); // 构造符合Edge要求的跳转链接 const edgeDeepLink = `microsoft-edge://open?url=${targetUrl}`; // 用_system强制调用系统外部应用打开,而非InAppBrowser window.open(edgeDeepLink, '_system');
3. 处理Edge未安装的异常情况
如果用户设备上没有安装Microsoft Edge,上述调用会失败,你可以添加检测逻辑,给用户友好提示:
// 先检查设备是否安装了Edge if (window.cordova && window.cordova.InAppBrowser) { window.cordova.InAppBrowser.canOpenURL('microsoft-edge://', (isInstalled) => { if (isInstalled) { const targetUrl = encodeURIComponent('https://google.com'); const edgeDeepLink = `microsoft-edge://open?url=${targetUrl}`; window.open(edgeDeepLink, '_system'); } else { // Edge未安装时的 fallback 处理 alert('请先安装Microsoft Edge浏览器'); // 或者直接跳转至系统默认浏览器 window.open('https://google.com', '_system'); } }); } else { // 未安装InAppBrowser插件时,直接尝试跳转 const targetUrl = encodeURIComponent('https://google.com'); const edgeDeepLink = `microsoft-edge://open?url=${targetUrl}`; window.open(edgeDeepLink, '_system'); }
如果你的项目还没安装cordova-plugin-inappbrowser,先执行以下命令安装:
cordova plugin add cordova-plugin-inappbrowser
4. 验证效果
完成以上步骤后,重新构建iOS项目:
ionic cordova build ios
然后在真机上测试(模拟器通常没有安装Edge),点击链接应该就能直接跳转到Microsoft Edge浏览器打开目标URL了。
内容的提问来源于stack exchange,提问作者puja




