2014-02-28 20 views
1

我将从环境AppGyver Steroids(包括Cordova 3.1核心插件)开始。用科尔多瓦处理iOS拨号器的最佳做法

需要的功能:从javascript控制器拨打电话并检测尝试成功或失败。

也有类似的问题,但它们要么是Android实施,要么不涉及功能的第二部分。

从我所研究和尝试的方法来看,window.open('tel:12345678', '_system')是最有效的方法,不需要使用自定义插件(首选),但无法检测它是成功还是失败(拨号器是否打开)。

这些类型的答案使我得出结论,我确实需要一个自定义Cordova插件才能获取该信息,并且插件方法甚至可能是首选,因为它可以本地访问拨号程序。

我的问题是2倍, - 你知道另一个解决方案,可以用核心插件实现,或者返回成功/失败或接受他们的回调? - 如果您是一位经验丰富的科尔多瓦用户,该任务会被视为最佳实践?有没有一种首选的开源插件可以在Android和iOS上运行?关于本机应该是什么样子的任何建议?

感谢

[编辑] 就做了插件,但获取有关拨号准确的信息仍然有问题。普遍接受的解决方案似乎集中在[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]];(参见this问题的一个讨论 - 不幸的是我还不能评论)。然而,正如其他人已经指出的那样,该功能可能由于多种原因(一些是暂时的)而失败,并且因此不是检测该设备是否具有实际拨号器的可靠方式。通过插件,我现在可以使用原生的,但新的iOS本地开发。有什么建议么?

回答

0

[回答您的编辑]如果您只是想显示/隐藏没有拨号程序的设备的通话功能,您只需执行一些浏览器嗅探功能即可测试它是否为iPad和非手机。这通常是而不是是一个很好的解决方案,但由于您在iOS上使用Cordova构建了一些东西,因此您已经知道每种情况下的浏览器。

+0

好吧,编辑中的解决方案似乎实际上对我来说很安静,但我认为你的解决方案也可以工作;我假设你的意思是'if(navigator.userAgent.toLowerCase()。match(/ ipad /))'。已经看到,在几个地方,但正如你所说,它似乎有点哈克。我希望看到更好的例子,本机地询问该设备是否可以拨打电话,最好甚至可以接听诸如Skype或其他可以打电话的应用程序。 –