一望楼

由里克·琼斯(Rick Jones)

自2003年以来,Lookout一直专注于提供一流的安全解决方案。在智能手机时代之前,它最初是为诺基亚手机提供的解决方案,于2009年演变为Android上的安全应用程序。在Android上获得成功之后,Lookout分支并发布了其产品。第一个iOS应用。 多年来,Lookout与众多蜂窝提供商建立了联系,其中许多提供商都希望自己定制。 在2015年,Lookout进入了企业市场,我们扩大了范围,提供了使企业免受恶意应用程序和来往于这些设备的网络流量威胁的解决方案。 在过去的几年中,Lookout通过开发SDK并为一些关键的蜂窝合作伙伴提供定制的白标解决方案,巩固了其与第三方集成的方法。

支持如此众多的产品变型带来了一系列挑战。 两年前,Lookout提出了一项内部计划,以简化和统一这些产品集中的用户体验,称为One Lookout。 该计划的总体目标是创建一个框架,以:

  • 由一组紧密相关的组件组成,这些组件经过模块化,封装,经过良好测试并在客户中得到验证
  • 最大化开发人员效率和速度
  • 完全可扩展
  • 易于与第三方(SDK)集成
  • 在所有产品和平台上提供一致的外观和感觉,但易于自定义和区分(白色标签)

在此版本中,我们将讨论如何通过iOS产品集中的One Lookout框架实现这些目标。

核心层

在最低层次上,Lookout始终在我们所有iOS产品之间共享一组核心库。 在此“核心层”中,我们提供常用服务,例如日志记录和联网,遥测和远程推送通知的处理。 Lookout的关键功能作为核心内的各个库在此层中提供。 这组库是过去几年中开发的旧功能和新功能的组合。 它为我们提供了构建任何Lookout SDK,Personal或Enterprise解决方案的基本构建块。

共享应用层

没有功能,当然没有产品,但是创建由这些功能组成的功能完善的应用程序也涉及很多工作。 尽管在行业中将功能分为可共享的功能和实用程序是很普遍的,但将此共享功能的范围扩展到应用程序层的情况却很少见。 One Lookout计划使我们能够创建一套新的库来填补这一空白,将我们的生产率和质量提升扩展到单个功能层之外,并提供我们认为具有强大竞争优势的库。 这些共享的应用程序层库提供的三个主要功能是:

  • 通用应用程序功能
  • UI配置和自定义
  • 特定功能的UI和处理

通用应用程序功能(AppCore)

所有Lookout应用程序都执行许多常规操作。 提供的应用程序功能的示例如下:

  • 排序和协调启动过程
  • 付款交易
  • iTunes整合
  • 与Lookout的帐单/帐户管理服务集成
  • 与其他主要Lookout服务集成,包括注册和授权
  • 深度链接处理
  • 用户权限处理
  • 远程命令处理
  • 用户通知
  • 分析工具

此功能封装在AppCore库中,该库还知道如何与每个应用程序通过AppCore注册和配置的各个功能进行交互。 在大多数情况下,应用程序本身可以与这种集成的细节大相径庭。

UI配置和自定义

鉴于我们提供的所有不同类型的应用程序,可定制性是Lookout的主要宗旨。 我们接受面向协议的编程,并使用一种轻量级的,本地开发的依赖项注入机制。 我们在库中大量使用此功能,既可以进行这些自定义,又可以为单元测试注入模拟。 我们所有的功能都经过全面的单元测试,开发人员测试和质量检查测试。

对于字体,颜色和图像的自定义,我们使用了MIT许可的NUI库(https://github.com/tombenner/nui)的稍作修改的版本,它允许我们为每个库提供样式表并覆盖它们在任何一层。 在内部,我们有一种机制也允许以类似的方式覆盖字符串资源。

特定功能的UI和处理

前面描述的iOS功能层中定义的每个功能库在应用程序核心层中都有一个推论库。 这些应用程序功能库负责执行与基础功能库的所有通信,从而使应用程序本身可以脱离任何此类知识。

每个应用功能

  • 实现通用功能协议,定义其与AppCore库和应用程序本身的集成
  • 完全封装自己的UI
  • 捕获并发送自己的分析
  • 管理并显示自己的用户设置

因此,每个功能都成为其自己的构建块。 在堆栈的顶部,应用程序可以由这些功能的任意集合组成,可以根据需要进行自定义和配置。

应用领域

安全性SDK

安全SDK为客户提供API,以保持其应用程序和用户网络流量及内容的安全。 在分层体系结构中,SDK负责处理客户端应用程序的标识/身份验证,并配置和抽象与核心库中较低构建模块的接口。 对于SDK做出关于共享应用程序功能的任何假设都是不合适的,因此它直接建立在核心库中提供的功能上。

监视应用

由Lookout构建的应用程序同时构建在共享应用程序层和核心层上。 每个应用程序都处理使应用程序唯一的细节,并构成通过共享应用程序和核心层提供的功能。

结果

根据结果​​回顾我们的原始目标:

目标

一组连贯的组件,这些组件是模块化的,封装的,经过良好测试的,并且在各个客户端上都经过验证

结果

我们确实提供了完整的模块化,封装的,经过良好测试的组件,供我们所有应用程序和SDK使用,并分布在定义明确的层中。

目标

易于第三方集成的SDK。

结果

第三方的速度和便捷性已证明了这一点。

目标

完全可扩展。 在产品和平台之间提供一致的外观,并且易于自定义和区分。

结果

我们整个产品系列(SDK和Lookout,Lookout for Work以及几个白标应用程序)的采用和使用证明了其可扩展性和提供一致但可自定义的用户体验的能力。

目标

最大化开发人员效率和速度

结果

从一开始就可以看到该框架带来的生产率提高,因为每个项目都建立在其前身创建的库的肩膀上。 该框架的好处可能在2018年夏季发布了一个新的带有白色标签的应用程序中得到了最好的体现。 该产品整合了2017年首次在“ Lookout”应用程序中发布的功能,并为美国一家主要运营商交付了新的个人VPN产品。 VPN功能本身已经开发了一段时间,但尚未在产品中发布。 可以预见,指定,设计,开发,测试整个产品,并在7周内将其提交给运输公司。

未来

留意未来的分期付款,它们将更深入地研究Lookout开发过程和iOS应用程序的权衡,以及Android团队的One Lookout计划。