当前位置:首页 > 开发教程 > 手机开发 >

构建混合应用程序和Comparism为Native iOS开发之旅

时间:2016-02-22 08:34 来源:互联网 作者:源码搜藏 收藏

您有一个应用程序的想法,决定自己做,单独或与一小群人,你的应用开发是不是专业组织。 那么这篇文章适合您的最佳选择。 上面的背景正是中,我实现了一个原生iOS和混合的应用程序之一。 利用混合在天然的做法是更有挑战性但也可以是有利的。 目标组 您有一
您有一个应用程序的想法,决定自己做,单独或与一小群人,你的应用开发是不是专业组织。那么这篇文章适合您的最佳选择。上面的背景正是中,我实现了一个原生iOS和混合的应用程序之一。

利用混合在天然的做法是更有挑战性但也可以是有利的。

目标组

您有一个应用程序的想法,决定自己做,单独或与一小群人,你的应用开发是不是专业组织。那么这篇文章适合您的最佳选择。上面的背景正是中,我实现了一个原生iOS应用,之后混合科尔多瓦的应用程序的情况。了解这一情况和下面的文章,你也许能更好地判断实现混合应用程式自己的可行性。

动机

在用自己的方式某个时候自己的软件产品,你将面临的决定如何提供软件给您的客户。我把这个软件项目过程中很基本的决定之一,不能轻易改变之后-至少它会造成巨大努力和成本以后。所以,像应彻底认为以下几个方面之前在一个或另一个方向扔去:

  • 是在移动方案中使用的软件?
  • 需要不同的操作系统和设备的支持,以及如何实现这一目标?
  • 被中央服务或数据的存储需要的?
  • 软件是否需要设备的具体功能呢?
  • 是必需的(常量)上网吗?

我已经回答了这些问题和其他问题对我的两个软件开发项目。

构建混合应用程序和Comparism为Native iOS开发之旅 对于一个小工具DSTimeK,在Scrum中的情况下使用时,决定将提供它作为移动原生iPhone应用程序。这里,总结学习的博客。
构建混合应用程序和Comparism为Native iOS开发之旅
随着第一个项目的经验,并回答了同样的问题目录FlAuMoQ(在化学环境中使用学习软件)的决定是为了实现其在移动设备上本地运行的混合应用程序。这里的博客上这一决定的更多信息。

本文将在用于FlAuMoQ并在年底的混合应用程序的方法仔细看看反映,如果它是正确的做法我不会谈论一般(和抽象)的差异。它使用具体要求,并说明你的选项执行它们。基本上,你可以按照旅程的配件组装面临不同挑战的混合应用程序。

在FlAuMoQ使用的技术组件

根据使用混合科尔多瓦决定接近下面的部件被使用。

在一般和独立的目标传递平台的:

  • 使用开源库openui5运行时移动-1.24.6它基于HTML5和Java Script。
    作为一个边评论:为应用程序它也决定使用openUI5,但是一般像引导任何其他库可以接管它的一部分。该openUI5库的目的是在Web浏览器中运行,也可以运行混合(见这里)。
  • 将NetBeans作为开发环境
  • 这些文物是在任何Web浏览器可执行文件

对于iOS:

  • 框架:科尔多瓦-v:5.1.1与科尔多瓦平台版本的iOS:3.8.0
  • 作为的XCode开发环境
  • 在iPhone 5S设备测试与IOS版本8.4.1

Android的:

  • 框架:科尔多瓦-v:4.3.0与科尔多瓦平台版本的Android 3.7.1
  • Android开发者工作室的开发环境
  • 关于三星Galaxy S2的设备测试了Android 4.1.2版本

对于Windows:

  • 框架:科尔多瓦-v:4.3.0与科尔多瓦平台版本的Windows WP8
  • 窗口的Visual Studio作为开发环境
  • 在Windows的Lumia 640设备测试用的Windows Phone 8.1更新2

根据不同的平台不同的进一步科尔多瓦插件已被使用。下面,与他们运行FlAuMoQ真机图片。

构建混合应用程序和Comparism为Native iOS开发之旅
FlAuMoQ在iPhone 5S,三星Galaxy S2和Windows的Lumia 640运行

混合应用程序开发过程中面临的挑战

混合应用开发开始如常。随着库(在我的情况openUI5)您选择,以及您的开发和运行时环境。该库提供了一组特殊的,使用它可以实现你的需求的特性。在Web浏览器中执行和测试应用程序后,文物是在科尔多瓦框架构建,使它们可执行在不同的设备。相比于本地开发使用上述技术部件组合的实施过程是比较反复。仅仅因为与使用框架的间接。沿着这样不同的挑战必须克服。

自由选择从VS自由选择

下面的列表显示你有不同的选项,履行发送电子邮件的要求

  • 处理这一要求的明显的方法是使用你选择你的应用程序库。用于发送电子邮件openUI5有法...
    
    			
    sap.m.URLHelper.triggerEmail(sEmail, sSubject, sBody, sCC, sBCC)
    ...(检查API参考这里)。在网页浏览器使用此方法打开操作系统电子邮件客户端。在Android上构建应用程序后,它的横空出世,已经在Android模拟器,即triggerEmail是行不通的。有时这仅仅是一个强烈的信号,但并不一定意味着是在设备自身上不工作。而且与给定的组件和它们的版本在设备上它没有成功。
    在这一点上已经想法成熟,对于共享有比电子邮件和经由科尔多瓦方法是共享可能是有利的多。

  • 接下来的路就可以实现发送电子邮件是图书馆的“退出”。在openUI5(其他库有此也)有一个HTML容器中,HTML这样的...
    
    			
    <a href="mailto:me@me.com">email me here!<a>
    ...可以传递。此外,还有对Java脚本的水平直接与此代码的机会...
    
    			
    window.open('mailto: me@me.comsubject=subject&body=body');
    ....两者都不能解释的Android模拟器。

  • 科尔多瓦通过其核心插件(见的使用提供了访问设备特定功能在这里)。对插件的例子是“设备的方向”,“摄像机”或“联系人”。不幸的是发送电子邮件是不是其中的一部分。自定义插件de.appplant.cordova.plugin.email作曲家已经帮助了。随着调用Android设备上下面的代码...
    
    			
    cordova.plugins.email.open({ subject: sEmailTitle, body: sEmailText});
    ...这显示,这超额完成了要求:
     
    构建混合应用程序和Comparism为Native iOS开发之旅
    构建混合应用程序和Comparism为Native iOS开发之旅
     
    Android和选择电子邮件菜单“打开方式”

  • 现在,人们可以认为,要求履行,但测试必须是交付的所有其他支持的平台上执行为好。在iOS设备中的自定义插件不工作,因为它主要是建立Android。正因为如此依赖于平台不同的电子邮件共享方法被调用。在IOS triggerEmail的情况下工作的设备上,并显示如下:
     
    构建混合应用程序和Comparism为Native iOS开发之旅
    通过在iOS电子邮件分享

    它不显示这样一个很好的打开方式对话,但用于发送电子邮件的要求得到满足。
这到底意味着,根据设备的不同的呼叫必须作出。此外,这里有不同的方法去。它可以很容易地通过这样的调用来实现...

	
if ( sap.ui.Device.os.name === sap.ui.Device.os.OS.ANDROID ) { ... do this ... }

...直接在库的水平。

 

通过不同的选项进行迭代的另一个例子是要求在新窗口中打开一个URL这里的挑战是,大多数的呼叫结束了在“InAppBrowsing”,这是不期望的行为。如果像常见问题的补充信息由用户打开应用程序应保持开放。为了使长话短说,这是工作:

  • 在Web浏览器:
    
    			
    sap.m.URLHelper.redirect(url, true);
  • 在Android设备上:
    
    			
    navigator.app.loadUrl(url, {openExternal: true});
    由Android平台只支持一个核心科尔多瓦插件功能。
     
  • 在iOS设备上:
    
    			
    window.open(url, "_system");
    一个Java Script标准。
     
  • 在Windows设备上:
    
    			
    window.open(url, "_system");

到本机的发展不同的是,(如使用IOS只),你没有那么多的选择,可能没有IOS时,不支持一些替代品。同时它可能发生的本地开发环境提供了更多的途径,例如发送电子邮件或打开一个URL。

因此,我将结束:混合留给你选择对不同层次使用的组件,可能更多的途径来解决需求的自由。它增加了复杂性,必须进行处理。

调试与测试

使用混合方法使得调试和各级检验必要首先调试,并在Chrome网络浏览器库的测试,使用Chrome开发者工具和。Android的-然后在Android模拟器和后来的Android设备做Java脚本调试这是有可能与Chrome和Chrome上://检查或weinre(见这里)。在Windows和iOS这是没有太大的不同。

做同样的本机应用程序是一个更容易一点,但两种方式都很好。

采用混合的一大优势是核心应用程序的第三方测试是一个容易得多对于做试验的文物如*。应用程序适用于iOS必须给测试人员使用。的本机开发的应用程序的测试需要一个用户能够从存储下载的工件,所述工件需要有正确的签名(证书/配置文件),他们的设备登记为测试设备等。测试的混合方法就是把一个Web服务器上的网络资源和URL发送给周围所有的测试。这样做的缺点是只有核心(网页)的应用程序可以进行测试。由于该设备相关的部分,与FlAuMoQ设备之间的交互并不多,这已经不是一个问题。

与处理的复杂性

由于选择,调试和测试和所有的努力的自由与此走来,我(作为一个人出现处理项目的所有IT部)有时的范围降低到其最低要求。下面你看到FlAuMoQ内置屏幕的概述。由于添加其他平台和设备测试时每科尔多瓦或设备特定迂回装置额外的努力,整个显示功能覆盖有核心的Web应用程序。

构建混合应用程序和Comparism为Native iOS开发之旅
阴离子阳离子查找的功能概述(FlAuMoQ)

有时明知的要求铅纯粹的复杂性,只是没有尝试这样做。这里的一个例子是广告一体化的复杂的逻辑。在实施IOS DSTimeK以下逻辑得到了应用。当应用程序被打开间质性广告被打开,一个横幅总是低于功能显示。当用户点击一个“特别临时免费的功能键”,另外一个广告显示,最终的广告是4小时取出。这意味着做发送和确认与苹果专卖店的请求,节省了定时器的复杂舞蹈和动态显示广告与否。不是说平台的具体差异。

对于混合做同样只是为了挑战性,因为其最终我只是显示下方的功能,谷歌广告的一个简单的横幅。

主要的讯息:你倾向于留下的东西了,只是因为它不是那么简单的,直观的编程和意味着高的努力的非专家的混合科尔多瓦程序员

渲染或所见即所得

在一些点上的应用程式有在下拉框中的选择使用。在图书馆的水平用控制被称为sap.m.Select。当示出了在网络浏览器或用科尔多瓦和平台的窗户控制它打开作为覆盖窗口只有部分的小帧。

构建混合应用程序和Comparism为Native iOS开发之旅
构建混合应用程序和Comparism为Native iOS开发之旅
 
呈现在Windows Phone和iOS选择控制(覆盖全屏幕)

当科尔多瓦解释是控制与Android或iOS设备上运行它打开时控制覆盖整个屏幕。这是我在一对夫妇的其他地方经验,以及如使用SplitApp控制的行为 - 这也需要全屏连我将其配置为滑动/与修复的宽度。

使用框架混合方法增加就如何使相应的设备上独立于平台的控制逻辑渲染可能是最初指定的不同。当使用本机的发展也有对只有一个渲染本地控制,如IOS的环境,因此,只有一个他们看的方式。你所看到的(一次)是你会得到什么。此外本机的外观和感觉是有点顺畅。

计划一次,到处运行 - 例如:分析整合

谷歌分析的整合是很容易启用网站或iOS上。只需通过调用Java脚本“www.google-analytics.com/analytics.js”,然后在不同的地方(主要是导航过程中)称之为“ga_storage._trackPageview('/启动);” 这相当于容易做混合。所不同的是用于混合你必须做一次,它是工作在所有设备上看到一个显示在应用程序测试期间的页面访问的第一个结果:

构建混合应用程序和Comparism为Native iOS开发之旅
测试期间,谷歌分析结果

当然,再利用这一优势不仅适用于谷歌分析的整合,而且对整个实施。但是,这是值得一提,因为它让我印象深刻了很多,这是工作的开箱,没有任何设备特定走弯路。

其他交付渠道的选择

而且,存在通过具有这样的可重复使用的Web应用程序的另一个优点。该应用程序,至少核心功能可能最终也只是提供一个网页上,即使这不是从一开始就打算。只要把源网页上的任何Web浏览器来显示。当然然后,要达到(至少位)功能与应用程序商店平价,用自己的支付流程和所需的安全性和认证过程磨磨蹭蹭。

同样是有效的问候加入更多的平台的努力。在最后,我决定到Windows Phone 8添加到交货。问候准备执行以下操作意味着窗口的应用程序的文物工作:

  • 学会处理一个新的开发环境
  • 增加图标所有需要的尺寸
  • 测试上的应用程序,特别是设备相关配件
  • 改变科尔多瓦配置文件以使用新的图标和一些窗口特定设置

当你现在认为,例如亚马逊火会得到有趣的一个平台或其他人,你可以只是将它加入后,只用最小的努力

在结论 - 学习收获两个项目后

对于具有这两种方法的知识,我不会再本地编程DSTimeK。在一般情况下,从它的功能的较不复杂的软件是,作为非本原应用更可能的实施获得。

这使得它复杂的事情是,你不知道的范围,并从一开始就对应用程序的所有要求。动画,性能,多平台,高期望的图形,流畅的易用性,使用的设备功能(摄像头,GPS,动画,存储数据...),与应用商店进行互动,使用(常量)互联网连接,维护工作而这一切的重要性一般原生VS混合qualitities在这方面发挥了很大的作用。

由于用于FlAuMoQ的复杂度相对较低,该方法被证明是比天然的更好。该应用程序甚至可以作为一个Web应用程序或使用本机Web容器的混合应用程序完全运行 - 与设备交互。在这两种情况下,替代的应用程序将在服务器上运行,并会在手机浏览器中呈现。所使用的混合方法允许使用的应用程序离线,其在本地设备上嵌入在科尔多瓦的库(提高性能),并可以用做它更好或更完整,然后使用本地网络替代Web应用程序或作为一个混合的应用程序的设备功能容器。

如果我不关心时间,金钱和资源,我会在本机建立,只是因为渲染是非常准确的,感觉在使用过程中更顺畅,并提供了更多的个人控制。但因为这是不是这样我会建议任何人在我的背景下还去为平台无关的编程。



手机开发阅读排行

最新文章