工程超级灯塔:24位RGB颜色匹配的乘客和司机

0
工程超级灯塔:24位RGB颜色匹配的乘客和司机

这篇文章是第七系列覆盖超级移动工程团队如何发展我们的驱动程序的最新版本,代号为碳,随意组合业务的一个核心组成部分。其他新特性,应用让我们的人口超过三百万driver-partners找到票价,方向,跟踪他们的收益。我们开始设计新的应用与反馈从我们driver-partners 2017年,并开始滚动生产在2018年9月。

皮卡是一个特别困难的难点为乘客和司机由于技术和物理因素。在技术方面,我们需要适当的骑手和驱动应用程序同步。在物理空间,比如晚上拥挤的街道上,它可以是具有挑战性的骑手和司机找到彼此。帮助乘客很容易识别他们的司机是一个关键的成功和愉快的旅行在我们的平台。

超级灯塔代表我们的自然延伸应用到现实世界,一个设备,提供直观的骑手和司机之间的比对,驾驶者可以选择任何颜色在容许范围。直观的选择一个颜色和看到它照亮你的驾驶挡风玻璃在一个月黑风高的夜晚可以产生很大的影响,即使看起来简单。事实上,驱动器的工程经验一点也不简单。让我们更深入的看我们如何利用我们的最新驱动程序,体验生活。

动画显示超级灯塔是如何工作的
超级信标,乘客可以选择显示的颜色,我们发送信标设备driver-partner的车,让骑手快速识别是谁来接他们的。

碳足迹

大多数移动灯塔工程是我们的驱动程序。实现使用两种资源:灯塔SDK,负责沟通与信标蓝牙勒,和一系列的工人在应用程序的对象肋骨架构利用信标SDK来驱动功能。

灯塔SDK

支撑信标的整个用户体验是灯塔SDK,负责蓝牙勒之间的连接和通信驱动程序应用和灯塔。在设计信标SDK我们坚持三个原则:

  • 平台无关的
  • 独立应用程序
  • 被动接口

平台无关的

因为超级移动架构是平台无关的,支持司机iOS和Android手机,它是重要的灯塔SDK建筑设计是平台无关的。通过允许工程师而言是跨平台的说话,我们可以更快,为其他团队提供更容易集成,需要利用信标。

独立应用程序

SDK开发的一个关键原则是确保SDK不依赖于消费应用程序。这对我们是至关重要的逐步推出新的驱动程序。保持消费者的SDK独立允许我们迭代SDK和提供改善新老司机在生产应用程序帮助司机避免中断。

被动接口

超级采用反应性编程在它的移动应用程序,所以它是重要的设计信标SDK暴露可见,坚持可观察到的合同。工程师使用SDK可以关注与信标的响应方式进行交互。低水平的复杂性蓝牙api抽象。

结果

我们设计了信标SDK暴露一系列经理对象,每个经理负责灯塔的功能的一个子集,比如连接,控制,无线(OTA)更新和传感器。每组经理负责与一个灯塔的互操作性,以及驱动程序可以运行任意数量的灯塔通过实例化一个组经理为每个设备。

树形图展示的核心指标层驱动程序连接到灯塔
图1:灯塔功能分解成逻辑经理反映信标的状态,并提供功能特定的领域。

每个经理由接口定义和SDK提供这些接口的实现。这些经理提供必要的平台级活性桥蓝牙api,它允许命令从司机的电话灯塔。

碳的工人

灯塔以来没有一个专门的用户界面,功能是通过工人提供几乎所有的灯塔。工人基本上是扶少团团员,没有专门的UI组件,所以逻辑不是与交互视图的应用程序。碳高度工人所需的最低肋给定的功能,和工人们分离,用于垃圾收集的肋骨从肋骨树中删除。

每一个工人都是依赖于一个或多个信标SDK经理。提供的经理们亲密育儿肋共享这些工人。当一个工人被实例化时,上游注入经理提供的范围。这样,灯塔经理所有员工共享,员工不负责这些经理的生命周期。

肋骨树驱动应用程序显示插件点灯塔
图2:在本节内的碳的肋骨树,灯塔工人附加活动和网络范围。经理们注入依赖图的活跃和提供给下游工人。

肋骨树让我们这些工人的启用和禁用插件点根据司机是否使用灯塔。如果司机不使用灯塔,这些插件点残疾,工人们从来没有被创建,和信标SDK经理从来没有被实例化,基本上消除信标的运行时足迹。

当司机使用灯塔,我们坚持合同,我们的工人应该附加最低的肋骨。这是我们的一个例子信标提醒工人,生产应用内警报等灯塔“低电池”或“找不到灯塔。“想象一个司机检查他们的收入在app在家里,一个状态,我们称之为离线自司机与乘客不匹配;司机不使用信标和不能接受这些类型的警报。我们只把灯塔提醒工人当司机在路上拾起乘客,称为网络,因为这是当这些警报。

端到端配色

灯塔的框架,我们可以利用骑手应用驱动配色的用户体验。

这个流从驱动程序连接到信标和上网。当司机在网上,我们附上信标能力职工在线肋骨,更新我们的后端与司机的灯塔的能力。驱动程序连接和断开与灯塔,我们相应地更新能力。当司机脱机时,后台自动更新错误的能力。

然后,当司机接受一程,骑手的应用收到司机的姓名和车辆信息,连同他们的灯塔的能力。如果能力是真的,我们显示一个图标灯塔骑手应用。作为回报,骑手程序自动发送一个先前选定的颜色(或一个随机选择的颜色如果骑手以前从未选择颜色)的后端,该通知驱动程序所需的颜色。

等待拿起时,骑手可以利用信标图标,我们显示一个24位色轮(与某些颜色,如红色和蓝色,删除安全与合规),驾驶者可以选择任何他们所希望的颜色。每次车手选择一个颜色,我们会寄颜色后端,进而通知驱动程序。

之间的数据流图骑手应用,后端驱动程序
图3:当信标被连接到一个驱动程序的应用程序,功能是传送到后端,这样当一个骑手与这个驱动程序,他们可以选择一个灯塔皮卡的颜色。

在驱动方面,我们有一个灯塔颜色工人侦听这些颜色在线通知当司机。当我们收到颜色,我们存储本地地图骑士+颜色配对。这样,如果司机接受了多个dispatches-such作为uberPOOL场景中,我们跟踪最新独特的颜色为每个骑手将捡起。

图表显示数据流从多个骑士后端应用程序
图4:如果有多个游乐设施的进步,我们维持一个骑手的地图选择颜色。

作为后端通知驱动程序我们已经进入了皮卡区域特定的骑士,我们发送一个命令从我们的颜色职工经理领导的灯塔,灯塔告诉它显示骑手的颜色瞧!我们有匹配的骑手司机通过我们的配色技术。每个后续的皮卡将显示骑手的颜色。此外,在皮卡,我们跳过彩色地图,并立即显示任何颜色骑手随后选择,保持应用程序,因此骑手和司机,同步。

图表显示数据流从后端驱动程序应用到灯塔
图5:乘客拾起,我们从地图检索他们的最新选择颜色。

移动和硬件的融合

超级总是寻找方法来提高我们的平台体验。扩展平台通过mobile-connected硬件物理世界是一种自然的进展。移动和硬件的融合创造了新的、令人兴奋的挑战桥我们应用到物理世界,和超级信标只是一个例子的乳房是如何创新空间。这是一个激动人心的时刻是超级移动工程师!

超级司机应用系列指数的文章

  1. 为什么我们决定重写超级的驱动程序
  2. 架构设计超级在肋骨的新的驱动程序
  3. 超级的新司机如何应用克服了网络延迟吗
  4. 扩展在超级吃现金支付
  5. 如何船没有冒着你的整个业务应用程序重写
  6. 构建一个可伸缩的、可靠的地图接口驱动程序
  7. 工程超级灯塔:24位RGB颜色匹配的乘客和司机
  8. 设计一个安全的、可伸缩的和服务器驱动平台驱动程序的偏好
  9. 构建一个实时业绩追踪到乳房的新的驱动程序
  10. 活动/服务依赖性:反思Android应用架构在乳房的新司机

确认

超级灯塔了大规模的团队努力构建,与许多个人负责的所有步骤,让我们这一点:

  • 彼得•奥利弗iOS工程师和老板超级信标体验
  • 珍妮顾,产品经理和掌握牧人的硬件和软件
  • Ramit赫拉、技术项目经理先生
  • 特里•Worona iOS工程师先生
  • Ernel Murati, Android工程师先生
  • Nikhil高尔原始产品经理颜色匹配技术
  • 萨米•基诺,iOS工程师,原始实现iOS
  • Guillame Lachaud,安卓工程师,最初在Android上实现
  • 约翰Badalamenti,产品设计

兴趣的发展中所使用的移动应用程序每天数以百万计的人吗?作为一个考虑加入我们的团队安卓iOS工程师!

评论