我正在尝试在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 +中为我工作。