xbr_network_freight 2.1.5 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();//销毁围栏中使用的定位
开发建议
- 使用地图实时显示围栏信息,控制司机的起运与结束,防止司机错误操作,创建司机运输过程中可视化运输环境,建议使用 xbr_gaode_amap: ^2.0.0
- 建议使用高德定位插件 xbr_gaode_location: ^2.0.0
- 建议使用高德地图查询插件 xbr_gaode_search: ^2.0.0
- SDK 认证须保留认证时间,不要反复认证,没有运单数据也不要认证。正式环境下运管不允许频繁认证。
- SDK 运行机制是 认证的时候请求一次运管验证账号,运单数据是保留在用户设备的缓存中,开始运单后,利用SDK传入与回调完成循环定位,所有的操作都在用户设备缓存中完成,定位会定时发送运管,也就是说只有Auth证+定位包要请求运管,其余的逻辑都在客户端SDK中。
- 根据SDK运行机制:用户在运输环境中卸载重装APP,运单数据是会丢失的,必须通过平台服务器数据恢复,卸载重装APP相当于换手机。
- Start和ReStart 都能完成恢复操作,正常恢复走 ReStart ,异常恢复走 Start,异常恢复只要运单轨迹正常,是没问题的。
- 运单轨迹异常时只要注明异常原因,是没问题的,对运管来说,它只能看到轨迹数据,轨迹正常,管你操作流程是怎样的。
- 轨迹包数据包含:经纬度,地点,标记,换车等(经纬度,地点SDK自动取,运单异常时:标记备注)
- 正常环境中开启后台服务,并对用户设备请求电池优化白名单,防止后台断网
- 如果不想使用插件的定时任务系统,可以直接使用 XbrNetworkFreight 类,自己完成任务逻辑。
参与贡献
- 本插件 由小镖人开发团队 开发并维护
- 贵州省网络货运社区平台 已上线,免费帮助物流企业完成网络货运转型,免费提供网络货运材料,所有APP,软件免费提供,45天内拿证
- 小镖人网络货运平台 系 贵州省网络货运孵化平台 子平台,欢迎货主用户、车主用户入驻,共享政策福利
- 在 贵州省网络货运社区平台 完成孵化的企业,产品名称、LOGO、APP支持自定义,完全免费,但是需植入 由小镖人开发的 社区系统,社区系统由小镖人维护,但可以与孵化平台共享收益, 且孵化平台企业独立运营自己的产品,社区平台不参与孵化平台的其他业务收益。
- 申请网络货运孵化 请移步 https://www.yilinwuliu.cn ,或直接联系平台业务专员:程|15286063702
SDK插件版本
高德版 2.1.1
特技
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/