Tag: 3s

在iOS和tvOS应用程序之间共享代码:比您想象的更普遍的基础

有比您想象的更多的共同点-重复使用,复制,回收以更快地进行成本节约型开发 如今,很难想象没有所有通讯设备的生活。 我们每天都在手机上看电视,讲话,发短信和发送电子邮件,和/或在计算机和游戏机上播放最新的视频。 如今,电视平台运营商意识到,他们的订户越来越多地要求他们必须通过电视和电视机轻松访问自己喜欢的在线和移动功能-所有在“非电视”设备上非常熟悉的“转到”应用,工具和娱乐频道-机顶盒(STB)。 因此,他们将投入数百万美元和欧元,以努力满足消费者的需求,并将这些服务作为独特而有吸引力的产品的一部分提供给观众。 面对日益激烈的竞争,电视服务提供商将竭尽全力在任何地方设法保留并进一步扩大其市场份额并战胜竞争的产品推出。 节约时间和投资的一种策略是,如果可能的话,尝试复制和重用已经建立的开发。 各地的开发团队都在尽力避免重新发明轮子。 可应用于多个设备平台而不是仅与一个设备平台兼容的开发活动正在变得越来越普遍。 从纯移动世界重用,复制和迁移创新以使电视应用开发环境受益的可能性比起初看起来的要大。 例如,第四代Apple TV于2015年10月发布,对于那些向消费者提供视频,音频和其他内容的公司而言,这是非常重要的日子。 您可能会问:自从2007年1月以来所有Apple TV投放市场之后,为什么这种迭代如此重要? 答案是因为只有第4代Apple TV附带了新的操作系统tvOS,并带有关联的应用商店,允许用户在其上安装第三方应用程序。 为新平台创建自己的品牌特定应用程序的新可能性促使公司开始考虑使用iOS和macOS将现有解决方案快速迁移到tvOS的策略。 他们的关键问题是:是否可以在iOS和tvOS之间共享代码库? 他们之间的差异揭示了这个问题的答案。 iOS和tvOS之间的最大区别是对用户交互的处理。 iOS服务是通过多点触控技术操作的,而对于tvOS,则是远程控制的。 苹果公司在UIKit中有一个名为“ 焦点引擎”的特定系统,可以在屏幕上的内容项之间进行导航。 正如Apple产品文档所解释的那样,大多数iOS框架也可以在tvOS中呈现,但是对于其中某些API来说,API有所限制。 这些限制通常与UIKit框架有关。 例如,某些类不存在(即,UIStatusBar,UIInterfaceOrientation,UIWebView,UISwitch等)。 另外,UISearchBar没有公共初始化程序,只能使用UISearchController创建。 此外,类的某些属性也不包括在内(例如,UIScrollView — scrollToTop,UITableView —eparatorStyle,UIViewController — preferredStatusBarStyle等)。 但是,尽管有这些框架的限制,但它们仍在tvOS中提供,我们可以在应用程序模型中使用相同的类,此外,我们还可以轻松共享视图代码和视图控制器。 有几种主要的方法来组织针对iOS和tvOS目标的开发: 具有共享代码链接库的单独项目; 工作区,包含共享代码的项目,iOS和tvOS目标的项目以及链接设置; 具有多个目标和条件编译的单个项目。 让我们分析每种方法。 带有链接库的单独项目 •干净的代码 •更少的构建时间(框架已经编译) •即使对共享代码进行很小的更改也将需要大量时间 2.工作区,包含 共享代码 的项目 •易于更改共享代码 •增加了构建时间 •增加使用共享代码解决项目中冲突的时间 3.具有多个目标和条件编译的单个项目 •易于维护 •不像第一种和第二种方法那么干净,因为共享类与特定于平台的实现放置在同一位置 所有这些方法都是有效的,但是对于需要积极发展新功能且时间紧迫的项目,最大限度地减少运营损失非常重要。 在这种情况下,进行有条件编译可以满足多个目标的单个项目是最好的方法。 为了确保项目的结构合理,并避免可能引起混乱的混乱,您需要定义一系列代码分隔规则: […]