我将从环境 AppGyver Steroids(包括 Cordova 3.1 核心插件)开始。
所需功能:从 JavaScript Controller 调用电话并检测尝试是否成功或失败。
也有类似的问题,但它们要么针对 Android 实现,要么不解决功能的第二部分。
根据我的研究和尝试,window.open('tel:12345678', '_system')
是最有效的方法,无需求助于自定义插件(首选),但提供无法检测它是否成功或失败(拨号器是否打开就足够了)。
这些类型的答案让我得出这样的结论:我确实需要一个自定义 Cordova 插件来获取该信息,并且插件方法甚至可能是首选,因为它可以本地访问拨号器。
我的问题有两个, - 您是否知道另一种可以仅使用核心插件实现并返回成功/失败或接受回调的解决方案? - 如果您是经验丰富的 Cordova 用户,那么此任务的最佳实践是什么?是否有适用于 Android 和 iOS 的首选开源插件?关于 native 端应该是什么样子有什么建议吗?
谢谢
[编辑]
继续使用该插件,但获取有关拨号器的准确信息仍然存在问题。普遍接受的解决方案似乎集中在 [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]];
(请参阅 this 问题进行一个讨论 - 不幸的是我无法发表评论然而)。然而,正如其他人也指出的那样,该功能可能会因多种原因而失败,有些是暂时的,因此,它不是检测设备是否具有实际拨号器的可靠方法。有了这个插件,我现在可以使用原生的但对于 iOS 原生开发来说是新的。有什么建议吗?
最佳答案
[回答您的编辑]如果您只想显示/隐藏没有拨号器的设备的通话功能,您可以进行一些浏览器嗅探来测试它是否是iPad/非手机。这通常不是一个好的解决方案,但由于您是在 iOS 上使用 Cordova 构建一些东西,您已经知道每种情况下的浏览器是什么。
关于javascript - 使用 Cordova 处理 iOS 拨号器的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105947/