仅在iOS13上无法使用tel和mailto链接

3

在我的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(解决使用inappbrowser打开链接的不同iOS 13问题,在此处记录:https://github.com/OutSystems/cordova-plugin-inappbrowser/pull/9)。

我认为我尝试了这篇文章中所有建议的组合(早于iOS13发布),但它们都不起作用-Tel:* and Sms:* links don't work on ios under cordova in phonegap?

我的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:Detected redirect when loadCount=-1,但它也出现在早期iOS版本中运行良好的情况下,因此我认为它不相关。
从config.xml中删除<allow-navigation href="*" />后(并在所有设备上破坏AJAX调用),在单击链接时,在iOS 13上会看到以下错误:
2019-10-06 22:11:28.960247+0100 GPCalc[89217:4657117] [default] Failed to open URL tel:0044123456789: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=247, _LSFunction=-[_LSDOpenClient openURL:options:completionHandler:]}
3个回答

2
我可以确认它在iOS 13.1.3的物理设备上可以工作,但在模拟器上(iOS 13.2.2、12.2、10.3.1)无法工作。

1

看起来只是因为我在使用 iOS 13.0 的模拟器,尽管目前由于某种原因无法将我的 iPhone 6 升级到 iOS 13 进行检查 - 但请注意这里:Cordova iOS Simulator tel and mailto not working。 我测试了运行 iOS 11.4 的仿真器,它也失败了,但至少在 XCode 日志中给出了一个错误:

无法加载网页,显示错误:URL 无法显示。该行为在 iOS13.0 模拟器中未得到维护。

如果有人能验证一下,我会很感激。谢谢。


1
你解决了吗?我也尝试了很多config.xml值的变化,但仍然无法使:tel和:mailto链接正常工作。 - KingRidgehead

0

我刚测试了一下,可以确认这个方法在真机上是可行的,而不是模拟器。我使用InAppBrowser来处理所有应用外的链接。以下是我的代码示例:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接