更新记录
0.0.6(2020-05-27)
-
关于调用插件入参相较上一版本改动说明:
- 去掉userId和userIdKey字段,无需存在userId和userIdKey字段了,如果需要自定义与服务端交互的参数请通过customParams传入,0.0.6版本已去除;
- 增加了isShowNotify、notifyTip、isPermanent和isStartApp字段,这几个字段均是通知栏提示相关的字段,具体描述请看参数说明。
-
定位成功上送的数据字段(备注:只有调用者设置了isSendUp为true,以及sendUpUrl不为空且是正确的可用的接口地址,才会通过接口地址上送到调用者所指定的服务端):
- altitude:海拔高度
- country:国家
- province:省份
- city:市
- cityCode:城市编码
- district:区
- adCode:区域编码
- networkType:网络类型
0.0.45(2020-05-14)
1.添加调用时可传入自定义上送服务器的信息; 2.添加timestamp字段,值为定位成功回调时的时间戳; 3.优化使用说明文档。
0.0.4(2020-04-22)
定位成功时,返回的msg为位置信息的json串。
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 10.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
-
引入插件
const leleLocation = uni.requireNativePlugin('Lele-Location');
-
启动定位
-
调用start函数,传入参数如下:
- sendUpUrl:上送服务器的接口地址,请求方式为post,isSendUp为ture时必传;
- token:可选,令牌,根据服务端要求;
- intervalTime:可选,间隔定位时间,单位毫秒(ms),默认2000ms;
- isSendUp:是否需要上送到业务服务器,提交服务器的请求方式为post请求;
- customParams:自定义上送到服务端的字段和值,使用标准的json对象。例如:customParams: {"key1":"value1","key2":"value2","key3":12};
- isShowNotify: true,//是否在通知栏显示"定位中..."的提示,主动调取stop()停止定位,通知栏提示也会自动消失;
- notifyTip: '工作中...',//通知栏提示信息,默认为"定位中...";
- isPermanent: true,//是否常驻通知栏(常驻通知栏,点击不会取消),isShowNotify参数为true时才有效;
- isStartApp: false////点击通知栏定位提示是否启动app,默认启动。传入false时,点击通知栏提示将无任何反应。
-
isSendUp为true时上送服务端的数据说明(备注:只有调用者设置了isSendUp为true,以及sendUpUrl不为空且是正确的可用的接口地址,才会通过接口地址上送到调用者所指定的服务端)
- 固定参数:
- gpsX:经度;
- gpsY:纬度;
- address:地位位置;
- timestamp:定位成功回调的时间戳,为客户端时间,不建议直接将此时间入库,而应该使用服务器时间。
- altitude://海拔高度,必须是GPS定位,而且不一定能获取到,试了华为好些手机获取不到,尝试使用原生android GPS定位api获取,偶尔能够获取到,但是太慢,目前此字段的值基本都为0,等找到解决办法再更新。
- country:国家
- province:省份
- city:市
- cityCode:城市编码
- district:区
- adCode:区域编码
- networkType:网络类型
- 自定义参数:
即调用者通过customParams字段传入的自定义参数。
- 数据实例
{"adCode":"530103","address":"云南省昆明市盘龙区花园路20号靠近江东双语幼儿园","altitude":0,"city":"昆明市","cityCode":"0871","country":"中国","district":"盘龙区","gpsX":102.739402,"gpsY":25.086172,"key1":"value1","key2":"value2","key3":12,"networkType":"4G","province":"云南省","timestamp":1590292280946}
-
结果回调:
-
回调中一定存在code和msg字段,根据code的值来做进一步的业务;
-
code值为字符串:"0"-定位成功;"-1"-定位失败;
-
msg为响应消息,定位成功时,msg返回的是定位结果的json字段串;
-
sendContent为上送服务端的数据,只有定位成功且isSendUp为true时才会回调次字段,否则请从msg中获取定位成功的数据。
-
成功回调到uniapp的数据实例
{"msg":"{\"accuracy\":100,\"adCode\":\"530103\",\"address\":\"云南省昆明市盘龙区铂金大道351号靠近兴业银行(昆明云南映象支行)\",\"altitude\":0,\"aoiName\":\"云南映象南区\",\"bearing\":0,\"bearingAccuracyDegrees\":0,\"buildingId\":\"\",\"city\":\"昆明市\",\"cityCode\":\"0871\",\"complete\":false,\"country\":\"中国\",\"description\":\"在兴业银行(昆明云南映象支行)附近\",\"district\":\"盘龙区\",\"elapsedRealtimeNanos\":0,\"errorCode\":0,\"errorInfo\":\"success\",\"extras\":{\"empty\":false,\"parcelled\":false,\"size\":0},\"fixLastLocation\":false,\"floor\":\"\",\"fromMockProvider\":false,\"gpsAccuracyStatus\":-1,\"latitude\":25.084339,\"locationDetail\":\"#csid:948438c050f243e19b631091982a5c28\",\"locationQualityReport\":{\"adviseMessage\":\"\",\"gPSSatellites\":0,\"gPSStatus\":0,\"netUseTime\":110,\"networkType\":\"4G\",\"wifiAble\":true},\"locationType\":5,\"longitude\":102.751341,\"mock\":false,\"offset\":true,\"poiName\":\"兴业银行(昆明云南映象支行)\",\"provider\":\"lbs\",\"province\":\"云南省\",\"road\":\"铂金大道\",\"satellites\":0,\"speed\":0,\"speedAccuracyMetersPerSecond\":0,\"street\":\"铂金大道\",\"streetNum\":\"351号\",\"time\":1590455690084,\"verticalAccuracyMeters\":0}","code":"0","sendContent":"{\"adCode\":\"530103\",\"address\":\"云南省昆明市盘龙区铂金大道351号靠近兴业银行(昆明云南映象支行)\",\"altitude\":0,\"city\":\"昆明市\",\"cityCode\":\"0871\",\"country\":\"中国\",\"district\":\"盘龙区\",\"gpsX\":102.751341,\"gpsY\":25.084339,\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":12,\"networkType\":\"4G\",\"province\":\"云南省\",\"timestamp\":1590455689926}"}
-
-
启动定位注意事项
- 插件中并未进行定位权限获取,因此在调用之前请先获取定位权限;
- 调用插件前请先调用uni.getLocation方法,以确保得到定位权限;
- 由于插件仅仅提供了android版,所以建议判断平台为‘android’,再进行调用。
-
实例代码:
getLocationPermission(){ let _self = this uni.getLocation({ type: 'wgs84', success: function(res) { uni.getSystemInfo({ success: function(res) { if (res.platform === "android") { uni.showToast({ title: '地位服务' }) _self.location() } } }); } }); }, location() { //开始定位 leleLocation.location( { sendUpUrl: 'http://127.0.0.1:9431/app/jobTrajectory/add', //上送服务器的接口地址,请求方式为post,isSendUp为ture时必传 token: 'eyJ0eX8RZe-wAWHk', //可选,令牌,根据服务端要求 // 无需存在userId和userIdKey字段了,如果需要自定义参数请通过customParams传入,0.0.6版本已去除 // userId: '145', //可选,用户标识,默认为null // userIdKey: 'auxiliaryId', //上送服务端的用户标识key值,对应值是userId传入的值,不指定userIdKey时,默认key为"userId"字符串。 intervalTime: 10000, //可选,间隔定位时间,单位毫秒(ms),默认2000ms。 isSendUp: true, //是否需要上送到业务服务器 customParams: {"key1":"value1","key2":"value2","key3":12},//自定义上送服务器的业务参数 isShowNotify: true,//是否在通知栏显示"定位中..."的提示 notifyTip: '工作中...',//通知栏提示信息,默认为"定位中..." isPermanent: true,//是否常驻通知栏(常驻通知栏,点击不会取消),isShowNotify参数为true时才有效。 isStartApp: false////点击通知栏定位提示是否启动app,默认启动。传入false时,点击通知栏提示将无任何反应。 }, result => { const resJson = JSON.stringify(result); modal.toast({ message: resJson, duration: 1.5 }); switch (result.code) { case '0': console.log('callback---result--' + resJson); console.log('callback---msg--' + result.msg); console.log('callback---sendContent--' + result.sendContent); break; case '-1': console.log('callback---button--' + result.msg); break; } } ); },
-
-
停止定位
-
调用stop()函数停止定位服务,参数如下:
无
-
结果回调
无
-
实例代码:
leleLocation.stop()
-