科尔多瓦试图拨打电话号码



我正在尝试在iOS中拨打电话号码,但是我只有模拟器和iPod Touch进行测试。

该代码使用的内容如下:

window.location.href = 'tel:01234567890';

在Android上运行良好,但在iOS中它因以下原因而死亡:

无法加载网页,出现错误:无法显示 URL

现在,我确实意识到以前有人问过这个问题,但前段时间的普遍共识是"它不起作用,你需要使用插件"。 不过,一段时间以来没有太多关于这个问题的问题,并且似乎有什么问题表明它在以编程方式执行此操作时有效(如上文window.location.href)。 我已经尝试了iOS PhoneDialer和同一插件的较新版本,但是两者都在XCode(ARC forbids explicit message send of 'release')中存在错误 - 有点失误,我可以让它运行,但是PhoneGap找不到插件 - 真的感觉就像我用这种方法撞到了砖墙,我不敢相信这样简单的事情需要如此过分的东西。

我知道出于安全原因,您不能自动拨打/自动呼叫号码,但我需要做的就是打开预填充号码的拨号器,这肯定与打开电子邮件客户端的mailto:info@example.com链接没有什么不同预先填充发件人?

所以,我的问题是:

  • 最近对PhoneGap,iOS或XCode的更新是否改变了这种情况?
  • 或者,我无法在iPod或模拟器上执行此操作,而在iPhone上可以正常工作吗?
  • 我该如何修复它?:)

您没有指定您使用的是哪个版本的 Cordova,所以我将假设版本> 3。

确保安装了 InAppBrowser(自版本 3 以来的插件),然后通过 Javascript 调用链接来打开链接,如下所示:

window.open('tel:12345678', '_system')

_system将使用系统自己的浏览器打开它,而系统自己的浏览器又会打开呼叫对话框,如果您将其用于 http://maps.apple.com/它将在地图应用程序中打开,对于为特殊 URL 打开的其他应用程序也是如此。

言论:

  • 如 InAppBrowser 插件的文档中所述,不会自动设置window.open功能。你必须自己做:window.open = cordova.InAppBrowser.open;.相反,您可以直接使用cordova.InAppBrowser.open('tel:12345678', '_system');
  • 确保您的号码中没有任何空格(+)前缀没问题)。例如,您可以使用如下所示的函数,假设num是一个字符串。

功能:

function placeCall(num) {
    if (window.cordova) {
        cordova.InAppBrowser.open('tel:' + num.replace(/s/g,''), '_system');
    }
}

下面的代码非常适合iPhone:-

window.open('tel:123456', '_system');

模拟器不支持拨号器。无需浪费时间。

确保href中的电话号码也没有任何格式,因为在iOS上,它会导致链接在PhoneGap应用程序中不起作用。例如,使用 tel:0390005555,而不是 tel:(03) 9000 5555。

我不认为这是科尔多瓦的问题。 我知道在本机iOS中,您无法在模拟器或iPod touch上调出拨号器。 您需要在实际的iPhone上对此进行测试。

我知道这是一个迟到的回答时间。

尝试将//添加到 url。像这样tel://xxxxxxxxx,看看它是否有效。

截至今天,在IOS 8.4,iPhone 6,6 +中为我工作。

最新更新