我正在尝试拨打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
链接打开没有区别您的电子邮件客户端预先填充了发件人?
所以,我的问题是:
答案 0 :(得分:39)
您没有指定您使用的Cordova版本,因此我将假设版本> 3。
请确保InAppBrowser,{3}以后的plugin is installed,然后通过Javascript调用此链接打开链接:
window.open('tel:12345678', '_system')
_system
将使用系统自己的浏览器打开它,而浏览器又打开调用对话框,如果您对http://maps.apple.com/使用它,它将在地图应用中打开,类似于打开的其他应用特别网址。
<强>说明:强>
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');
}
}
答案 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 +中为我工作。