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

时间:2013-10-28 16:07:24

标签: ios objective-c xcode cordova

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

代码使用了以下内容:

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

在Android上运行良好,但在iOS中却死于:

  

无法加载包含错误的网页:无法显示网址

现在,我确实意识到这已经被问过了,但是从一段时间以来的普遍共识是“它不起作用,你需要使用插件”。一段时间以来,关于这一点的问题并不多,而且有什么问题似乎表明它在以编程方式进行时是有效的(如上所述window.location.href)。我已经尝试过同一个插件的iOS PhoneDialer和更新版本,但两者都在XCode(ARC forbids explicit message send of 'release')中出现错误 - 有点不对劲,我可以让它运行,但是后来PhoneGap找不到这个插件真的让我觉得我用这种方法撞到了一堵砖墙,我不敢相信这么简单,因为这需要一些东西。

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

所以,我的问题是:

  • 最近更新了PhoneGap,iOS或XCode吗?
  • 或者,我不能在iPod或模拟器上执行此操作,它在iPhone上可以正常工作吗?
  • 我该如何解决? :)

5 个答案:

答案 0 :(得分:39)

您没有指定您使用的Cordova版本,因此我将假设版本> 3。

请确保InAppBrowser,{3}以后的plugin is installed,然后通过Javascript调用此链接打开链接:

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

_system将使用系统自己的浏览器打开它,而浏览器又打开调用对话框,如果您对http://maps.apple.com/使用它,它将在地图应用中打开,类似于打开的其他应用特别网址。

<强>说明:

  • 如上所述in the docs of the InAppBrowser pluginwindow.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');
    }
}

答案 1 :(得分:7)

以下代码适用于iphone: -

window.open('tel:123456','_ system`);

模拟器不支持拨号程序。不需要浪费时间。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我不相信这是科尔多瓦的问题。我知道在原生iOS中你无法在模拟器或iPod touch上调出拨号器。您需要在实际的iPhone上测试它。

答案 4 :(得分:-4)

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

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

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