cordova试图拨打电话号码

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

代码使用了以下内容:

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

与Android的工作正常,但在iOS中死亡:

无法加载出现错误的网页:无法显示url

现在,我意识到这已经被问到了,但是从前一个普遍的共识是“它不工作,你需要使用一个插件”。 虽然这个问题已经有一段时间了,但是有什么问题似乎表明它在编程的时候会起作用(如上面的window.location.href )。 我已经尝试了iOS PhoneDialer和相同的插件的新版本,但都在XCode( ARC forbids explicit message send of 'release' )的错误 – 有点faffing,我可以得到这个运行,但然后PhoneGap不find插件 – 它真的感觉就像用这种方法打砖墙一样,我不能相信这样简单的事情,因为这需要顶层的东西。

我知道你出于安全原因不能自动拨号/自动呼叫号码,但是我只需要打开拨号程序,拨号号码是预先填入的,这与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是一个string。

function:

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

下面的代码工作完全正确的iPhone: –

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

模拟器不支持拨号器。 没有必要浪费时间。

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

我不相信这是一个cordova问题。 我知道在本地iOS中,您不能在模拟器或iPod touch上显示拨号程序。 您将需要在实际的iPhone上进行testing。

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

尝试通过向url添加// 像这样的tel://xxxxxxxxx ,看看它是否工作。

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