android - Android 上的 Ionic InAppBrowser 无法导航到自定义 URL 方案
问题描述
我有一个设置,我在插件 InAppBrowser 中打开一个带有目标“_blank”的 url。插件 Deeplinks 也已安装和配置。
const browser: InAppBrowserObject = this.iab.create(url, '_blank', <InAppBrowserOptions>{
location: "no",
toolbar: "no",
footer: "no"
});
browser.on('loadstart').subscribe((event: InAppBrowserEvent) => {
console.log(event);
if (event.url.indexOf('wflwr://payment/success') > -1) {
browser.close();
}
if (event.url.indexOf('wflwr://payment/cancel') > -1) {
browser.close();
}
if (event.url.indexOf('wflwr://payment/error') > -1) {
browser.close();
}
});
我缩短了它以仅显示重要部分。打开的 url 是https://www.voan.ch/wfl/(在真正实现之前只是一个 Mock)
预期的行为是,单击 url 上的每个链接时,应用程序内的浏览器实例应该关闭。这在 iOS 上按预期工作,但在 Android 上却不行。事件只是没有被触发。如果我将其中一个 url 更改为 eg <a href="https://www.google.com">CANCEL</a>
,则事件被触发。
解决方案
对此的支持是在最新的pr中添加的
要使用它,您需要两件事:
例如允许 whatsapp 自定义方案和 twitter
- 使用您要支持的自定义方案添加新的 config.xml 首选项:
<preference name="AllowedSchemes" value="whatsapp,twitter" />`
- 添加事件监听器customscheme:
inAppBrowserRef.addEventListener('customscheme', function (event) { //do whatever you want here like: window.open(event.url, "_system"); });
推荐阅读
- linux - 如何从 SSL 密码列表的配置文件访问 Perl 中的变量
- paperjs - 如何更改 Paper.js 中的默认单位?
- sql - 在变量 plsql 中获取逗号分隔的 ID
- eclipse - 两个不同版本的 perl 产生不同的结果是否正常?
- javascript - 使用 REST API 中的 ID 更改特定卡片的 onClick 按钮文本
- python - 生成一个 numpy 随机数请参阅从均值 1 和标准差 2 的正态分布中抽取的 100 个随机数数组
- dart - Flutter - 无法使用 FAB 而不是 TabBar 图标更改选项卡
- sql-server - 如何在 EntityFrameworkCore 中使用差异函数?
- python - Python - 是否可以使用空白列创建连接字符串
- php - 如何从选定的月份获取上个月