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

Mik*_*ike 19 xcode objective-c ios cordova

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

该代码使用了以下内容:

window.location.href = 'tel:01234567890';
Run Code Online (Sandbox Code Playgroud)

适用于Android,但在iOS中它会死于:

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

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

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

所以,我的问题是:

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

gaq*_*qzi 40

你没有指定你使用的Cordova版本,所以我假设版本> 3.

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

window.open('tel:12345678', '_system')
Run Code Online (Sandbox Code Playgroud)

_system将使用系统自己的浏览器打开它,然后打开调用对话框,如果你在http://maps.apple.com/上使用它,它将在地图应用程序中打开,类似于打开特殊网址的其他应用程序.

备注:

  • 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');
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

以下代码适用于iPhone: -

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

模拟器不支持拨号器.不需要浪费时间.