xbr_network_freight 2.1.5 copy "xbr_network_freight: ^2.1.5" to clipboard
xbr_network_freight: ^2.1.5 copied to clipboard

网络货运开发者的福利,重磅!!!FLUTTER 网络货运 SDK2.0 插件来了,支持IOS+Android,已全场景调试完成,开箱即用

xbr_network_freight #

介绍

网络货运开发者的福利,重磅!!!FLUTTER 网络货运 SDK2.0 插件来了,支持IOS+Android, DEMO附带全场景调试,多车运输,中途换车,场景标记,中途更换地址等,直接用调试版本就可以 完成网络货运接入申请,并且附带电子围栏。

调试截图

使用说明

1. pub.dev 搜索 xbr_network_freight,打开版本列表,下载最新版本工程
2. androidStudio 打开工程,flutter版本不得低于2.2.3
3. 打开 example > lib > auth > yilin_auth.dart, 填写自己公司申请的网络货运相应账号
4. 点击运行,安装APP
5. App进入后完成权限申请,打开地图调试界面
6. 根据网络货运相关要求,完成50条测试运单,需涵盖下面4个场景,下面使用插件demo调试完成,(也可以在正常APP环境中完成)
(一)标准一车一单,正常运输:

(1)点击右上角添加一条运单,注意起点设置在当前位置,

(2)点击开始运输,选择运单,确认开始。

(3)驾车前往收货点,必须正常行驶,中途APP不要关闭。

(4)到达收货围栏范围,点击结束运输即可。

(二)一车多单

(1)点击右上角添加多条运单,起点可以不设置在当前位置,但是模拟时不方便。

(2)驾车前往对应的装货点,点击开始运输,选择围栏内的运单(可以一次多选,也可以分批选),确认开始,

(3)依次前往对应的装货点,完成(2),让运单全部装货完成

(4)依次前往收货点,选择围栏内的运单(可多选),点击结束运输即可

(三)中途换车

(1)右上角添加一条运单(多条也行)点击开始运输

(2)点击暂停运输,并标记暂停原因(要记下来选的哪一个)

(3)点击右上角换车,根据标记的原因,换车只修改车牌号,换人只修改司机,换人换车两个都修改,换手机需要先记下运单号+分单号+运单起点+终点(点击运单列表项可以查看运单信息),替换手机后点击右上角添加相同的运单数据,点击开始运输即可(正常应该走重启运单,但其实两个接口都可以。不建议做换手机测试,太麻烦)。

(4)点击恢复运单,选择之前标记的原因,重新开始。

(5)到达收货围栏结束运输即可

(四)临时更换收货地址

(1)正常开始一条运单,参考上面

(2)未达到收货点,点击强制结束,选择需要强制结束的订单

(3)选择强制结束的原因即可

7. 正式接入
参考调试环境接入正常的APP环境:

(1) 引入:xbr_network_freight 最新版本

(2) APP进入时完成FreightTask初始化,做好懒加载

    freightTask = FreightTask.getInstance(
      tmsAppId: Yilin.tmsAppId,
      appSecurity: Yilin.appSecurity,
      enterpriseSenderCode: Yilin.enterpriseSenderCode,
      environment: Yilin.environment,
      taskListener: (bool success, String? code, String? msg, List<ShippingNoteInfo>? infos) {
        //这里是日志回调接口,用于打印任务日志
      },
    );

(3) APP进入时:取出平台后台服务器的运输中的运单数据,构造(localInfoList)数据,传进认证接口

ps:这里有个坑,android认证后是可以返回运单全部数据的,可以不用后台数据,但ios只返回运单的单号+分单号,认证后是没办法运行的,所以这里统一从后台录入数据。认证后有运输中的运单任务系统会自动提交发送定位,send。

    freightTask?.authInitRun(localInfoList:localInfoList,successBack: (code, msg, infos){
        //认证成功,返回的 infos 状态已全部是已开始状态,如果没有运行中的订单,这里就不用管了
        //如果infos大小不为空,需要保存 infos,同步到运单也行
    });

(4) 新运单开始,运单开始成功任务系统自动发送定位,send。

    freightTask?.startRunTask(shippingNoteInfos: list, remark: remark,successBack: (code, msg, infos) {
        //运单开始传入 list运单信息,如果是一车多单,remark要标记 [99]车牌号,list如果起点一致可以一起传,如果起点不一致就到达装货点分开传,传一个也不影响一车多单
        //但是必须在结束前,保证全部开始一车多单的所有运单
        //开始运单要设置电子围栏,在发货点位置附近才能点击开始运单,否则打印的运单轨迹会出问题。
    });

(5) 运单暂停 定位也会自动停止

    freightTask?.pauseRunTask(shippingNoteInfos: list,remark: value, successBack: (code, msg,infos) {
        //运单可以在开始后任意时间点暂停,暂停后的运单要同步到平台运单体系,可以同时暂停多条运单。
        //注意:全部暂停运单后,SDK数据会全部清除,重新认证会发现没有运输中的运单,暂停时要标记原因,[02]换车 换人 换手机 (一个或多个)
    });

(5) 恢复运单,运单恢复成功任务系统自动发送定位,send。

    freightTask?.reStartRunTask(shippingNoteInfos: list,remark: value, successBack: (code, msg,infos) {
        //暂停运单后,平台运单体系运单是暂停状态,可以恢复,根据运单标记的状态,替换相应数据后传入 list
        //注意:运单暂停>恢复运单 标记要一致,操作场景要一致(标记换车就要换车,标记换人就要换司机,标记换手机就要换手机)。
        //标记换手机时:在上一台手机上点击暂停运单,remark标记为 [02] 换手机,并关闭手机,打开新手机,获取平台运单暂停数据,
        //点击恢复运单,remark标记为 [02] 换手机
        //如果旧手机无法暂停怎么办,突然没电,突然死机,损坏等意外:直接在新手机上开始运单(不用恢复,因为旧手机没有标记暂停,运单应该还是标记为开始运行状态,
        //利用平台运单体系,重新执行开始运输运单(只要单号相同,最终轨迹线还是会连在一起的)。
        //但是注意:平台要判断,平台标记运输完成的运单,即使SDK初始化时显示在运行中,也不能执行发送定位
        //(这个插件只要把平台数据传入认证(authInitRun),插件是不会执行平台没有的运单的,但要保证传入的运单是运行中的)。
    });

(6) 结束运单 定位也会自动停止

    freightTask?.stopRunTask(shippingNoteInfos: list,remark: value, successBack: (code, msg,infos) {
       //正常情况下要利用电子围栏判断运单能不能结束,否则如果在非地点结束的话又没有标记运单,是要被查的,
       //只要在非收货地点附近(我设的是300米,运管要求应该没有这么严)结束运单,必须标记非正常结束的原因([00]车辆损坏 [01]货主临时改变收货位置)。
       //正常在收货围栏结束后,可以登录运管系统查看运单轨迹。
    });

(7) 退出登录/关闭网络货运任务系统 视情况关闭

    freightTask?.disposeTask();//关闭网络货运任务系统,FreightTask
    controller?.disponse();//地图控制器
    uiController.dispose();//地图绘制控制器
    XbrGaodeLocation.instance().destroyLocation();//销毁围栏中使用的定位

开发建议

  1. 使用地图实时显示围栏信息,控制司机的起运与结束,防止司机错误操作,创建司机运输过程中可视化运输环境,建议使用 xbr_gaode_amap: ^2.0.0
  2. 建议使用高德定位插件 xbr_gaode_location: ^2.0.0
  3. 建议使用高德地图查询插件 xbr_gaode_search: ^2.0.0
  4. SDK 认证须保留认证时间,不要反复认证,没有运单数据也不要认证。正式环境下运管不允许频繁认证。
  5. SDK 运行机制是 认证的时候请求一次运管验证账号,运单数据是保留在用户设备的缓存中,开始运单后,利用SDK传入与回调完成循环定位,所有的操作都在用户设备缓存中完成,定位会定时发送运管,也就是说只有Auth证+定位包要请求运管,其余的逻辑都在客户端SDK中。
  6. 根据SDK运行机制:用户在运输环境中卸载重装APP,运单数据是会丢失的,必须通过平台服务器数据恢复,卸载重装APP相当于换手机。
  7. Start和ReStart 都能完成恢复操作,正常恢复走 ReStart ,异常恢复走 Start,异常恢复只要运单轨迹正常,是没问题的。
  8. 运单轨迹异常时只要注明异常原因,是没问题的,对运管来说,它只能看到轨迹数据,轨迹正常,管你操作流程是怎样的。
  9. 轨迹包数据包含:经纬度,地点,标记,换车等(经纬度,地点SDK自动取,运单异常时:标记备注)
  10. 正常环境中开启后台服务,并对用户设备请求电池优化白名单,防止后台断网
  11. 如果不想使用插件的定时任务系统,可以直接使用 XbrNetworkFreight 类,自己完成任务逻辑。

参与贡献

  1. 本插件 由小镖人开发团队 开发并维护
  2. 贵州省网络货运社区平台 已上线,免费帮助物流企业完成网络货运转型,免费提供网络货运材料,所有APP,软件免费提供,45天内拿证
  3. 小镖人网络货运平台 系 贵州省网络货运孵化平台 子平台,欢迎货主用户、车主用户入驻,共享政策福利
  4. 在 贵州省网络货运社区平台 完成孵化的企业,产品名称、LOGO、APP支持自定义,完全免费,但是需植入 由小镖人开发的 社区系统,社区系统由小镖人维护,但可以与孵化平台共享收益, 且孵化平台企业独立运营自己的产品,社区平台不参与孵化平台的其他业务收益。
  5. 申请网络货运孵化 请移步 https://www.yilinwuliu.cn ,或直接联系平台业务专员:程|15286063702

SDK插件版本

高德版 2.1.1

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
1
likes
105
pub points
56%
popularity

Publisher

unverified uploader

网络货运开发者的福利,重磅!!!FLUTTER 网络货运 SDK2.0 插件来了,支持IOS+Android,已全场景调试完成,开箱即用

Homepage

Documentation

API reference

License

MulanPSL-2.0 (LICENSE)

Dependencies

flutter, json_annotation

More

Packages that depend on xbr_network_freight