tel:和mailto:链接仅在iOS13上不起作用

时间:2019-10-06 21:14:59

标签: cordova ionic2

在我的ionic v2 cordova应用程序中启动邮件和电话应用程序的mailto:和tel:链接在iOS 13上不起作用。它们在Android和iOS的早期版本中都没有问题。

我正在使用cordova 9.0.0和cordova-ios 5.0.1

此外,如果它们是相关的cordova-plugin-whitelist 1.3.3和cordova-plugin-inappbrowser 3.1.1-dev(以解决另一个iOS13问题,即使用inappbrowser无法打开链接,请参见此处{{3} }。

我想我已经尝试了这篇文章中的所有建议组合(距离iOS13推出很久了),但它们都不起作用-https://github.com/OutSystems/cordova-plugin-inappbrowser/pull/9

我的HTML看起来像这样:

<a class="item item-icon-left item-icon-right dark" href="tel:0044123456789" ng-click="trackTap('Telephone')">
    <i class="icon ion-ios-telephone"></i>
        Give us a call
    <i class="icon ion-ios-arrow-right"></i>
</a>

<a class="item item-icon-left item-icon-right dark" href="mailto:savings@lynxpurchasing.co.uk" ng-click="trackTap('savings@lynxpurchasing.co.uk')">
     <i class="icon positive ion-email"></i>
         Email us
     <i class="icon ion-ios-arrow-right"></i>
</a>

在config.xml中,我目前拥有:

    <allow-navigation href="*" />
    <allow-intent href="http://*/*"/>
    <allow-intent href="https://*/*"/>
    <allow-intent href="tel:*"/>
    <allow-intent href="sms:*"/>
    <allow-intent href="mailto:*"/>
    <allow-intent href="geo:*"/>

我已删除:

    <access launch-external="yes" origin="tel:*" />
    <access launch-external="yes" origin="mailto:*" />

我认为不再需要它们。

在应用的另一页中,我拥有:

$http({
    method: 'GET',
    url: 'http://www.domain.co.uk/app/app-json.php',
    timeout: 15000
})

有些帖子建议删除<allow-navigation href="*" />,但如果我这样做了,那么$ http GET调用将不再在任何平台/操作系统版本上起作用(并且无论如何都无法解决该问题)。

在XCode控制台中单击tel:和mailto:链接时,我看到

  

CDVWebViewDelegate:当loadCount = -1时检测到重定向

但是当它在早期的iOS版本中也可以显示时,所以我认为这无关紧要。

从config.xml中删除<allow-navigation href="*" />(并在所有设备上中断AJAX调用)后,单击链接,我在iOS 13上看到以下错误:

  

2019-10-06 22:11:28.960247 + 0100 GPCalc [89217:4657117] [默认]无法打开URL tel:0044123456789:Error Domain = NSOSStatusErrorDomain Code = -10814“(null)” UserInfo = {_ LSLine = 247,_LSFunction =-[_ LSDOpenClient openURL:options:completionHandler:]}

3 个答案:

答案 0 :(得分:1)

我似乎只是因为我正在使用适用于iOS 13.0的模拟器,尽管由于某种原因我目前无法将iPhone 6升级到iOS 13以便进行检查-但请注意:{{ 3}} 我使用运行iOS 11.4的模拟器进行了测试,但它也失败了,但是它至少在XCode日志中确实给出了错误:

  

无法加载网页,并显示以下错误:该网址无法显示   在iOS13.0模拟器中无法保持该行为。

如果有人可以验证这一点,我将不胜感激。干杯。

答案 1 :(得分:0)

我可以确认它可以在装有iOS 13.1.3的物理设备上运行,但不能在模拟器(iOS 13.2.2、12.2、10.3.1)上运行

答案 2 :(得分:0)

仅测试了一下,我也可以确认它可以在真实设备上运行,而不是在模拟器上运行。我正在使用InAppBrowser处理我所有的应用程序外绑定链接。这是我的代码示例:

window.cordova.InAppBrowser.open("mailto:test@test.com", "_system", "location=yes");