围栏

作者: liangtong | 来源:发表于2019-01-23 15:24 被阅读0次

    围栏描述

    在设备满足特定场景前提下,当用户手持安装应用的设备进入/离开勘察工作区域时,程序需要给用户进行响应及提醒。

    实际情况中,由于工作场景的不同,围栏个数不确定。比如地铁项目、(跨区的)园区建设项目。

    针对某个工程,要求程序的提示不能太过频繁。即当用户在项目围栏边界区域连续触发进入/离开工作区域时,不能重复提醒。且需要考虑用户多设备的情况。

    • 进入围栏

      • 程序未启动 -> 打开程序,直接打开项目操作详情页,方便用户操作。
      • 若参与项目的状态处于「工作中」状态下
        • 检查用户针对该项目的最新操作状态,处理异常。
      • 若参与项目的状态处于「空闲中」状态下,给用户提示。用户可选择交互动作包括:
        • 刷新工程操作页面。
        • 进入项目操作页。
    • 离开

      • 若参与项目的状态处于「工作中」状态下,程序在后台进行「签退」操作。

    方案

    地理围栏借助于 高德地图 配合后台模式来实现。
    程序的提醒频次控制借助于 SQLite 数据库缓存来实现。
    后续相关操作借助于 观察者 模式实现。

    此处重点说明下程序提醒频次控制的实现思路及流转次序。

    缓存数据库中主要存储以下几点信息:

    • 标识:用于工程和地理围栏的挂钩。
    • 工作状态:用于判断用户针对该工程的操作。
    • 触发时机:用于频次控制。
    • 其他:用于组织提醒用户内容等。

    流转次序如下:

    • 若用户是外业见证人员,则在程序启动时,获取用户所参与的项目的总览信息(特别说明包括外业工作状态)。
    • 构建并监听项目的地理围栏。
    • 触发进入围栏操作时
      • 根据地理围栏标识(移动端自行约定),在本地SQLite数据库中进行碰撞,查找缓存中的工程。
      • 若能找到工程,则进行以下操作。以兼容用户多设备操作的情况。
        • 获取该工程的概况,根据用户对应该工程的操作状态进行响应。
        • 更新缓存数据。
      • 若不能找到工程,则通知前台可进入项目操作页(针对打开程序时,直接进入项目操作页)。
    • 触发离开围栏操作时
      • 等待60秒后执行以下操作,防止边界上因为GPS不准确导致提醒不准确。
      • 根据地理围栏标识,在本地SQLite数据库中查找缓存中的工程。
      • 若能找到工程,则进行以下操作
        • 查看设备是否处于该工程下的其他地理围栏中(针对工程多区域现象)。
        • 如果设备不处于工程的地理围栏中。则在后台进行「签退」操作。
        • 更新缓存数据。

    相关文章

      网友评论

          本文标题:围栏

          本文链接:https://www.haomeiwen.com/subject/qiajjqtx.html