我正在开发针对iOS和Android平台的移动应用。该应用程序将包括:
一个相对简单的“用户登录/注册和数据库项目列表”类型的界面,由已经构建的Web服务和现有Web应用程序提供支持。
使用原生插件的视频捕获和上传功能。
我上周对PhoneGap进行了广泛的研究,并确定即使考虑到PhoneGap的详细记录问题和限制,它也非常适合我的应用程序的第一部分。
但是,考虑到PhoneGap Capture API(org.apache.cordova.media-capture)的限制,它不适合捕获视频以进行上传,主要是由于缺乏对视频规范的控制。 (在大多数设备上,视频捕获将是巨大的高清文件,即使在Wifi上也不适合上传,当然也不会超过3g / 4g。)
鉴于我的资源和时间表,我已经确定在Java和ObjC中构建本机应用程序是不切实际的,至少目前是这样。我的ObjC和Java经验很少,但如果需要,我非常自信并渴望学习这些语言。
那就是说,我正在考虑两个选择:
第一个,也可能是最合理的,是我选择了我现有用户群(iOS)更大市场份额的平台,吸收它,然后去原生。
第二个,也许是高尚的选择,是我在PhoneGap中开发一个混合应用程序,针对两个平台,并通过使用PhoneGap的插件API为Java和ObjC构建本机插件来规避我的视频捕获能力的限制,从而缩短了应用程序其余部分的开发时间,并仅在需要的地方使用本机代码。
我的视频捕获插件的要求如下:
完全控制录制视频的规格,最重要的是分辨率和比特率。 (据推测,在Adroid SDK中使用AVFoundation等)。
控制视频捕获功能的用户界面。
显然,我知道在本地api中进行开发时,这两个平台上的这些任务都很有可能,正如市场上现有的应用程序所显示的那样。 (藤等......)。
我真正的问题是,有哪些限制,以及通过PhoneGap的插件API扩展本机功能的问题?在PhoneGap中几乎没有完成这一级别的本机视频捕获实现的工作示例。我发现的一个例子就是这个插件,VideoCapturePlus虽然我无法上班,但看起来很有希望。
我特别想知道是否有人在PhoneGap中成功实现了具有这种复杂程度的本机插件,或者如果它是一个兔子洞,我希望我没有失败。
答案 0 :(得分:13)
我基本上已经深入到这个问题的最底层,我相信其他人都将会面对。我将分三个部分讨论这个主题:
我可以在PhoneGap中执行[某些操作](与原生iOS或Android SDK相反)吗?
这是一个我想象很多开发人员考虑使用PhoneGap框架发现自己要问的问题,我也是这样。简短的回答是肯定的,你可能会这样做。
如何在PhoneGap中执行某些操作?
插件!这就是问题:Cordova(PhoneGap)的所有亮点在于它访问本机硬件功能的方式非常有限,尤其是当您进入视频/照片/音频捕获时。
这就是插件的用武之地。目前有数以千计的PhoneGap插件。许多就像4行Java和Objective C一样简单,以克服PhoneGap不会做的一些简单的事情。其他是具有自己生命周期的大型项目。
就我而言,很早就很清楚,我无法使用PhoneGap中存在的视频捕获功能构建我的应用程序。也就是说,我去购买插件。在我的项目结束时,它已经使用了2个插件来扩展视频功能,还有4个插件用于完成我需要的其他各种小事。在少数情况下,我发现的插件并没有我需要的所有东西,而且我最终贡献了一些代码。如果项目在GitHub上有效,我强烈推荐这个。
最后,有些事我想做,我找不到插件。我仍然有计划建立自己的一些,但我还没有。结论:在游戏和其他3D渲染应用程序之外,您很难找到使用PhoneGap插件无法实现的功能。
对于那些对视频捕捉特别感兴趣的人来说,这些是我的项目让我超越驼峰的2个插件:
我应该在PhoneGap中构建我的应用程序吗?
当然,这个问题取决于每个开发人员,以及该应用程序的目标是什么。就我而言,一个简单的应用程序,其中包括捕获和上传照片和短视频是很有可能的。当然,应用程序的参数和目标使得本机开发成为最佳选择。
也就是说,对于大多数资源有限且没有或没有Java或ObjC经验的独立开发人员或小团队,问题的答案“我应该考虑使用PhoneGap吗?”,将是[我最好的Jim Halpert声音], “绝对应该”。作为一个额外的奖励,我会这样说:在我的情况下,HTML5布局,以及用于我的应用程序的Android和iOS版本的大部分前端JS在很大程度上可重用于我的应用程序的移动网络版本。能够为这三件事维护单一代码库可以提供更高资源的组织不应忽视的效率。