数位场景识别Android SDK是一个提供精准室内位置的数据服务应用程序接口。该接口可提供无需额外硬件部署的室内位置识别功能,使移动设备应用快速具备获取用户室内精准位置的能力。https://cloud.papakaka.com/flash/#/dashboard可获取sdk
场景识别Android SDK需要数位授权的AppId、AppKey,每个Key仅且唯一对于1个应用验证有效,即对该Key配置环节中使用的包名匹配的应用有效;
AppId和AppKey的获取方式:
1.注册数位云账号;
2.创建一个“我的应用”,即可获取;
3.联系数位商务同事激活此应用,即可正常使用。
此文档适配Android SDK V4.1.0+版本。
库文件从数位云“下载”菜单中的“数位场景识别_Android_SDK”链接处获取;
请根据所用IDE选择导入方式:
Eclipse ADT:
将SDK中的 jar 文件拷贝到工程的libs文件夹中。
Android Studio:
在Android studio 项目的需要添加SDK的模块,新建libs文件夹;
将SDK中的jar包拷贝到刚才建立的libs文件夹中;
修改需要添加模块的build.gradle文件,添加放置SDK开发包jar到应用的lib目录,在需要集成SDK的module 中bulid.gradle文件中添加相关的依赖(具体jar包以实际提供的jar文件为准)。
dependencies {
implementation files('libs/ShuweiELBS_Android_SDK_vx.x.x.jar')
}
-keep class com.szshuwei.x.** { *; }
## 或者
-libraryjars libs/ShuweiELBS_Android_SDK _vx.x.x.jar
在Application标签中声明SERVICE组件,每个APP拥有自己独立的定位service,此service可以单独运行在另一个进程中:
or
声明使用权限:
权限说明:
权限 | 用途 |
---|---|
android.permission.INTERNET | 允许程序网络访问的权限 |
android.permission.ACCESS_NETWORK_STATE | 允许程序获取网络状态权限 |
android.permission.ACCESS_COARSE_LOCATION | 允许程序获取wifi列表、蓝牙列表,基站等定位信息的权限 |
android.permission.ACCESS_FINE_LOCATION | 允许程序获取wifi列表、蓝牙列表,基站等定位信息的权限 |
android.permission.READ_PHONE_STATE | 允许程序获取手机IMEI号相关信息的权限 |
android.permission.CHANGE_WIFI_STATE | 允许程序获取wifi变化的权限 |
android.permission.ACCESS_WIFI_STATE | 允许程序获取wifi状态的权限 |
android.permission.BLUETOOTH | 允许程序获取蓝牙变化的权限 |
android.permission.BLUETOOTH_ADMIN | 允许程序获取蓝牙变化的权限 |
设置AppId,AppKey:
在Mainfest.xml正确设置AppId和AppKey,如果设置错误将会导致场景识别SDK服务无法正常使用。需在Application标签中加入以下代码,填入开发者自己的AppId和AppKey:
在应用程序的 Application 类的onCreate方法中调用SWLocationClient.initialization(this)
public class MainApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
SWLocationClient.initialization(this);
}
}
// 如果需要开启开发者日志功能,可以调用:SWLocationClient.initialization(this, true);
为了保证用户能够顺利的进行数据调试,增加了数据调试模式,通过注册插值器来模拟一段有定位结果的信号,使用方法如下:
SWLocationClient.initialization(this);
//...
//注册插值器,模拟输入信号,使用正常输入信号
if(DEBUG) {
SWLocationClient.getInstance().registerWifiInterpolater(new WifiInterpolater.Stub() {
@Override
public List interpolate() throws RemoteException {
return DebugUtils.mockResults();
}
});
}
//...
//取消插值器
SWLocationClient.getInstance().unregisterWifiInterpolater();
对于Android 6.0以上版本,设备的部分权限使用是需要动态进行申请的,场景识别Android SDK涉及的权限有“获取手机基本信息”、“获取WiFi、基站、蓝牙等定位权限”:
获取手机基本信息的权限:
android.permission.READ_PHONE_STATE
获取WiFi、基站、蓝牙等定位需要用到的权限:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.CHANGE_WIFI_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.BLUETOOTH // 部分手机蓝牙权限要动态获取
重要提示:
为了不影响APP的用户体验,SDK不会主动申请权限(申请权限会弹对话框),SDK只会检查APP有没有相关的权限,如果有就正常回发数据,如果没有就保持静默或者不启动Service服务。
为了保证SDK的正常运行,如果您的APP 使用的SDK版本高于6.0(API >= 23) 请动态申请相关的权限,通常是在APP的启动页面去申请检查。
在需要使用SDK中的任何功能之前,都需要先启动Service服务,启动Service服务必须放在SDK初始化之后。 建议在onCreate()生命周期中启动Service服务,代码如下:
SWLocationClient.getInstance().start();
如果需要监听Service服务启动是否成功了,可以注册监听回调接口,代码如下:
SWLocationClient.getInstance()
.setOnClientStartListener(new SWLocationClient.OnClientStartListener() {
@Override
public void onStartSuccess() {
// 服务启动成功了
}
@Override
public void onStartFail() {
// 服务启动失败了
}
});
在不再需要使用SDK中的任何功能之后,可以停止Service服务。 建议在onDestory()生命周期中停止Service服务,代码如下:
SWLocationClient.getInstance().stop();
如果需要使用周期触发功能,请不要停止Service服务。
所谓周期触发,就是SDK每隔一定周期进行一次场景识别触发,开发者不需要执行任何触发操作,如果需要使用周期触发功能,需要先注册周期触发回调接口,然后启动周期触发功能。 注册周期触发回调接口如下:
SWLocationClient.getInstance().registerCycleLocationListener(new CycleLocationListener() {
@Override
public void onCycleLocationSuccess(int retCode, String msg, LocationData locationData) {
//定位成功时会回调这个方法
}
@Override
public void onCycleError(int retCode, String msg) {
//定位失败时会回调这个方法
}
});
启动周期触发功能如下:
boolean start = SWLocationClient.getInstance().startCycleSceneRecognizeUI();
// true 表示启动成功,false 表示启动失败
在不需要周期触发功能的时候可以进行先停止周期触发功能,然后注销回调接口。 停止周期触发功能如下:
boolean stop = SWLocationClient.getInstance().stopCycleSceneRecognizeUI();
// true 表示停止成功,false 表示停止失败
注销周期触发回调接口如下:
SWLocationClient.getInstance().unregisterCycleLocationListener();
通过主动触发的方式,可以获取到当前位置点的一些位置相关的信息。
这种方式默认是不开通的,如果贵方是需要在C端用户某些行为的时候进行一些埋点操作的话,可以在商务洽谈的时候进行沟通并且申请开通。如果是没开通的情况下,主动触发接口sceneRecognizeUI ()的调用会始终返回一个false,这点请知悉。
在需要获取定位信息的地方注册对定位结果的监听器:
SWLocationClient.getInstance().registerLocationListener(new LocationListener() {
@Override
public void onLocationSuccess(int code, String msg, LocationData locationData) {
//定位成功时会回调这个方法
}
@Override
public void onError(int retCode, String msg) {
//定位失败时会回调这个方法
}
});
主动申请位置信息,通过调用SWLocationClient 的实例方法sceneRecognizeUI能够发起一次主动调用。为了防止重复的申请,我们默认会做一定大小的缓存时间,从上一次申请之后的五分钟(时间可以在后台配置)内都会返回同一个位置信息,如果客户想要更短间隔的缓存时间请联系我们进行配置。返回值为true则表示成功启动一次扫描,为false则表示未注册回调或者上一次正在扫描中,或者服务处于未启动状态。
boolean isCanReqLocation = SWLocationClient.getInstance().sceneRecognizeUI();
if (isCanReqLocation) {
//如果能正常进行获取定位,则返回true,
} else {
//当上一次主动定位没完成、后台没配置允许主动定位或者是定位服务没启动,不能进行定位,这时候会返回false
}
当不需要监听回调结果的时候(如Activity的onDestroy()方法内),请及时注销监听器,以免造成内存泄露,注销方式如下:
SWLocationClient.getInstance().unregisterLocationListener();
有些应用场景或者业务下,集成方需要在场景识别的时候加上自己的标识或者数据,因此我们开放了一个扩展参数的功能。扩展参数可以根据客户的要求来配置是否在对应的回调接口中返回。如果配置为返回,则会原样返回;如果配置为不返回,则不会返回该字段。具体示例参考代码如下:
主动触发的扩展参数设置:
SWLocationClient.getInstance().sceneRecognizeUI("任意自定义字符串");
//设置之后,当次的主动触发就会带有这个参数
周期触发的扩展参数设置:
SWLocationClient.getInstance().setExtendParameterCycle("任意自定义字符串");
//设置之后,下一次的周期触发就会带有这个参数
定位结果中扩展参数的获取:
//主动触发的定位成功回调
@Override
public void onLocationSuccess(int code, String msg, LocationData locationData) {
//上一次请求传入的扩展参数
String extendParameter = locationData.getExtendParameter();
...
}
...
//周期触发的定位成功回调
@Override
public void onCycleLocationSuccess(int retCode, String msg, LocationData locationData) {
//上一次请求传入的扩展参数
String extendParameter = locationData.getExtendParameter();
...
}
特别注意:
扩展参数请尽量勿传入过长的字符串,以减少无谓的的带宽流量消耗,目前暂时没有对此扩展参数长度进行限制,但是不保证后期前/后端不会进行的截取操作,如有任何问题,请务必和我们进行沟通协商。
透传字段和扩展字段的使用类似,不过透传字段是不需要通过后台配置是否返回的,而是一定会在对应的回调接口中原样返回的。主要用来区分不同触发请求的。具体示例参考代码如下:
主动触发的透传参数设置:
SWLocationClient.getInstance().setPassThroughPassive("任意自定义字符串");
//设置之后,下一次的主动触发就会带有这个参数
周期触发的扩展参数设置:
SWLocationClient.getInstance().setPassThroughCycle("任意自定义字符串");
//设置之后,下一次的周期触发就会带有这个参数
定位结果中透传参数的获取:
//主动触发的定位成功回调
@Override
public void onLocationSuccess(int code, String msg, LocationData locationData) {
//上一次请求传入的透传参数
String passThrough= locationData.getPassthrough();
...
}
...
//周期触发的定位成功回调
@Override
public void onCycleLocationSuccess(int retCode, String msg, LocationData locationData) {
//上一次请求传入的透传参数
String passThrough= locationData.getPassthrough();
...
}
特别注意:
透传参数请尽量勿传入过长的字符串,以减少无谓的的带宽流量消耗,目前暂时没有对此透传参数长度进行限制,但是不保证后期前/后端不会进行截取操作,如有任何问题,请务必和我们进行沟通协商。
以下章节 3.12, 3.13, 3.14是需要使用采集功能才需要使用到的接口和文档说明,如不需要采集功能,可跳过这三个小节的文档说明。
在需要使用采集功能的地方先注册采集回调接口,如果没有注册采集回调接口,是无法调用采集功能的,注册回调接口的代码是:
SWLocationClient.getInstance().registerCollectListener(new CollectListener()
{
@Override
public void onCollectSuccess(int retCode, String msg, CollectResponseData data) {
// 采集接口调用成功的回调
}
@Override
public void onCollectError(int retCode, String msg) {
// 采集接口调用失败的回调
}
});
在需要进行数据采集的地方,通过调用以下接口,采集定位信号和数据:
CollectData collectData = new CollectData();
collectData.setName(poiName); //其他数据请进行对应的设置
boolean isCanSubmit = SWLocationClient.getInstance().submitCollectDataUI(collectData);
if (isCanSubmit) {
//如果能正常进行数据采集,则返回true,
} else {
//当上一次定位或者采集还没完成、后台没配置允许主动定位或者是定位服务没启动,不能进行采集,这时候会返回false
}
3.10.1 采集数据中的扩展字段
采集数据支持一个自定义扩展字段(必须是json格式的字符串)的传递,对应的代码是:
collectData. setCollectExt (collectExt);
通过在定位回调接口的LocationData对象中获取collectExt字段,或者在采集查询回调接口的CollectQueryData对象中获取collectExt字段,可以获取到这个采集的自定义扩展字段。
3.10.2 采集数据中的透传字段
采集数据支持一个自定义的扩展字段的传递,对应的代码是:
collectData.setPassThrough(passThrough);
透传字段在采集调用成功后,会直接在 CollectResponseData 中原样返回。
3.10.3 采集数据中的采集者id字段
采集数据支持一个采集者id字段(非必传字段)的传递,通过设置这个字段,可以指明该条采集数据是由哪个采集者上传的,之后在查询或删除对应的采集信息时,也需要带上同样的采集者id字段。如果没有传递这个字段,则默认使用设备的唯一标识作为采集者id字段。建议开发者传递用户id或其他能唯一识别用户的字符串到这个字段以便进行用户账号对于采集数据的权限控制。对应的代码是:
collectData.setCollectorId(collortorId);
特别注意:请根据商务合同中确定的需要采集的数据进行传递。省、市、区、街道、楼宇、楼层不得超过64个字符长度,商圈、name字段不得超过128个字符长度,自定义扩展字段必须是json格式的字符串且不得超过255个字符长度,自定义透传字段可以是任意字符串且不得超过255个字符长度,采集者id字段是任意字符串且不得超过255个字符长度。
在需要查询采集信息的地方先注册采集查询回调接口,如果没有注册采集查询回调接口,是无法调用采集查询功能的,注册回调接口的代码是:
SWLocationClient.getInstance().registerQueryListener(new QueryListener()
{
@Override
public void onQuerySuccess(int retCode, String msg, QueryResponseData data) {
// 采集查询接口调用成功的回调
}
@Override
public void onQueryError(int retCode, String msg) {
// 采集查询接口调用失败的回调
}
});
在需要查询采集信息的地方,通过调用以下接口,查询采集数据:
QueryData data =new QueryData();
data.setCurrentPage(currentPage); //设置当前页
data.setPageSize(pageSize); //设置每一页的数据数量
data.setPassThrough(ptParam); //设置透传字段
data.setCollectorId(coParam); //设置采集者id
boolean isCanQuery = SWLocationClient.getInstance().queryCollectDataUI(data);
if (isCanQuery ) {
//如果能正常进行采集数据查询,则返回true,
} else {
//当上一次采集数据查询还没完成、或者网络不可用而不能进行采集查询时,会返回false
}
其中设置透传字段和采集者id的信息,请参考“3.12采集功能的使用”中的说明。
在需要删除采集信息的地方先注册采集删除回调接口,如果没有注册采集删除回调接口,是无法调用采集删除功能的,注册回调接口的代码是:
SWLocationClient.getInstance().registerDeleteListener(new DeleteListener()
{
@Override
public void onDeleteSuccess(int retCode, String msg, DeleteResponseData data) {
// 采集删除接口调用成功的回调
}
@Override
public void onDeleteError(int retCode, String msg) {
// 采集删除接口调用失败的回调
}
});
在需要删除采集信息的地方,通过调用以下接口,删除采集数据:
DeleteData data = new DeleteData();
data.setPoiIdList(pois); //设置需要删除的POI点的编码集合
data.setCpCodeList(cpCodes); //设置需要删除的采集点的编码集合
data.setPassThrough(ptParam); //设置透传字段
data.setCollectorId(coParam); //设置采集者id
boolean isCanDelete = SWLocationClient.getInstance().deleteCollectDataUI(deleteData);
if (isCanDelete ) {
//如果能正常进行采集数据删除,则返回true,
} else {
//当上一次定位采集数据删除还没完成、或者网络不可用而不能进行采集删除时,会返回false
}
其中设置透传字段和采集者id的信息,请参考“3.12采集功能的使用”中的说明。
影响SDK的电量的主要因素为定位周期和WiFi列表扫描,其中定位周期影响因素较大。下表中“满负荷工作”状态为“扫描周期5min、定位周期5min,设备位置持续变化”状态。
SDK适用说明 | Android4.0(API Level 14)及以上版本 |
---|---|
大小 | 305.6 KB |
流量消耗(满负荷工作) | ≈2.60096KB/次 |
耗电量(满负荷工作) | ≈0.092875mAh |
静默时CPU占用 | ≈0% |
触发时CPU峰值占用 | ≈16.575% |
触发时CPU峰值占用持续时长 | ≤160ms |
静默时平均内存占用 | 3.5M |
触发时内存波动的峰值 | ≈4MB |
触发时内存波动的峰值持续时长 | ≈460ms |
SDK通过上传用户采集的数据和手机获取到的当前位置的信号信息(主要是必传的WiFi信号,同时也包括基站、蓝
牙、光强、地磁、方向等非必传信号)到服务器来定位;
定位运行过程中会通过定时器设定每隔一定周期会在设备权限允许的前提下扫描设备的WiFi列表;
扫描列表通过与最近一次的扫描结果进行比较,上一次信号变化超过设定的阈值,调用定位接口进行定位;
应用列表、设备信息等其他的上报数据通过设定周期,定期在定位接口中同时上报数据到服务器。
在Android Q上将无法获取设备的IMEI 信息,我们已经对此获取容错处理,在Android Q手机上不会报错。
在Android Q上获取到的MAC地址将是随机的,导致无法通过MAC追踪用户,目前对这个接口做了容错处理,不会报错,对于获取到的MAC是随机的,暂时没有处理。
在Android Q上,如果应用想要在后台获取定位权限,需要申请ACCESS_BACKGROUND_LOCATION 权限。对应APP应用,如果应用的 targetSdkVersion=Q,必须动态申请 ACCESS_BACKGROUND_LOCATION 权限;如果应用的 targetSdkVersion 在Android Q上想要扫描WiFi、蓝牙及使用 WLAN API 都必须拥有 ACCESS_FINE_LOCATION 权限才行。所以请客户的应用在针对Android Q做适配的时候,务必申请到 ACCESS_FINE_LOCATION 权限,否则会影响定位功能的结果。 每个应用将只能访问自己应用创建的文件,且替换并取消了原来的 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限,改而使用 READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO 等权限,由于我们SDK中并不需要读取外部存储设备的权限,所以对于我们 SDK 的影响不大。 Android Q对于通过反射获取系统中隐藏接口功能的API做了限制,目前我们SDK中只会通过反射获取应用的Activity任务栈中Activity的个数,这个API接口目前在Android Q限制的灰名单中,暂时没有影响。 从Android P开始,系统对于WIFI信号的扫描做了限制,前台应用 2 分钟只能获取4次WiFi,所有后台应用30分钟内一共只能获取到1次WiFi信号,所以请客户控制好主动定位的频率。 特别注意: 我们SDK已经针对Android Q做了适配,关于SDK中需要使用到的权限,需要客户的应用自己申请。 SDK的场景识别功能目前适用的范围为中国境内,在Google Play上架包含SDK的应用,请开发者注意Google Play的隐私政策,请按照隐私政策,书写隐私文档。 字段示例: 字段示例: 字段示例 字段示例: 字段示例:
4.4 无线信号的获取
4.5 外部存储设备权限的变化
4.6 非Android SDK接口限制
4.7 WiFi信号扫描限制
5 上架问题
6 定位结果(LocationData)的说明
序号
字段
数据类型
说明
1
retCode
Integer
业务码。 0:定位成功,包含结果; >0:参见业务码说明。
2
msg
String
业务码辅助提示信息。 有定位结果:"OK"; 无定位结果或其他:参见业务码说明。
3
requestSign
String
请求签名
4
data
返回数据实体
4.1
timestamp
String
接口响应时间戳(ms)
4.2
name
String
POI名称
4.3
floorName
String
楼层信息
4.4
building
String
楼宇名
4.5
area
String
商圈信息
4.6
address
String
地址
4.7
street
String
街道
4.8
region
String
行政区
4.9
city
String
城市
4.10
brand
String
品牌
4.11
areaCategory
String
商圈分类
4.12
areaAttribute
String
商圈属性
4.13
poiCategory
String
POI分类
4.14
poiAttribute
String
POI属性
4.15
coordinateSystem
String
经纬度坐标系类型: BD09-百度坐标系 GCJ02-火星坐标系 WGS84-地球坐标系
4.16
longitude
Double
经度
4.17
latitude
Double
纬度
4.18
collectExt
String
采集的自定义扩展字段
4.19
passThrough
String
透传参数
4.20
poiId
String
POI唯一标识
{
"retCode": 0,
"msg": "OK",
"requestSign": "439d8190a0ac977306ae436859bd4a9b25a64ada",
"data": {
"timestamp": 1552374907740,
"name": "zara",
"floorName": "1",
"buliding": "海岸城购物中心",
"area": "海岸城购物中心",
"address": "文心四路14",
"street": "文心四路14",
"region": "南山区",
"city": "深圳市",
"brand": "zara",
"areaCategory": "购物中心;商场",
"areaAttribute": "档次:高档",
"poiCategory": "购物;服装",
"poiAttribute": "风格:潮流时尚|品牌来源:欧美",
"coordinateSystem": "GCJ02",
"longitude": 113.936074,
"latitude": 22.51703,
"collectExt ": "asdf",
"passThrough": "passThrough_example",
"poiId": "fdae3e2cd316bb8a"
}
}
7 采集字段(CollectData)的说明
字段
类型
说明
备注
timestamp
Long
采集的时间戳(ms)
name
String
POI名称
floorName
String
楼层信息
building
String
楼宇名
area
String
商圈信息
address
String
地址
street
String
街道
region
String
行政区
city
String
城市
province
String
省份
collectExt
String
采集的自定义扩展字段
必须是json格式的字符串
passThrough
String
采集的自定义透传字段
可以是任意类型的字符串
collectorId
String
采集者id
建议传递用户唯一标识以进行权限控制
"timestamp": 1552374907740,
"name": "zara",
"floorName": "1",
"buliding": "海岸城购物中心",
"area": "海岸城购物中心",
"address": "文心四路14",
"street": "文心四路14",
"region": "南山区",
"city": "深圳市",
"province": "广东省",
"collectExt": "ext",
"passThrough": "pt",
"collectorId": "xxx"
8 采集结果(CollectResponseData)的说明
序号
字段
数据类型
说明
1
retCode
Integer
业务码。 0:定位成功,包含结果; >0:参见业务码说明。
2
msg
String
业务码辅助提示信息。 有定位结果:"OK"; 无定位结果或其他:参见业务码说明。
3
data
返回数据实体
3.1
requestSign
String
请求签名
3.2
timestamp
String
接口响应时间戳(ms)
3.3
passThrough
String
透传字段,可以是任意类型的字符串
3.4
poiId
String
POI点编码
3.5
collectPoints
采集点列表
3.5.1
cpCode
String
采集点的编码
3.5.2
timestamp
String
采集点的采集时间
3.5.3
latitude
double
纬度
3.5.4
longitude
double
经度
3.5.5
passThrough
String
透传字段,可以是任意类型的字符串
{
"retCode": 0,
"msg": "OK",
"data": {
"timestamp": 1565937976253,
"passThrough": "pt",
"requstSign": "d27b6101beaf0e0cf2898c938472a26b1005dc77",
"poiCode": "95rol0ye1ldldrk1",
"collectPoints": [{
"cpCode": "64rlglqelvncx38o",
"timestamp": 1565937973382,
"latitude": 22.549247,
"longitude": 113.943889,
"passThrough": "pt"
}]
}
}
9 采集查询结果(QueryResponseData)的说明
序号
字段
数据类型
说明
1
retCode
Integer
业务码。 0:定位成功,包含结果; >0:参见业务码说明。
2
msg
String
业务码辅助提示信息。 有定位结果:"OK"; 无定位结果或其他:参见业务码说明。
3
data
返回数据实体
3.1
requestSign
String
请求签名
3.2
timestamp
String
接口响应时间戳(ms)
3.3
passThrough
String
透传字段
3.4
recordsCount
Integer
该collectorId总的采集数量
3.5
data
采集数据实体
3.5.1
poiId
String
POI点编码
3.5.2
timestamp
String
采集点的采集时间
3.5.3
poiName
String
POI名称
3.5.4
floorName
String
楼层信息
3.5.5
building
String
楼宇名
3.5.6
area
String
商圈信息
3.5.7
address
String
地址
3.5.8
street
String
街道
3.5.9
region
String
区域
3.5.10
city
String
城市
3.5.11
province
String
省份
3.5.12
collectExt
String
扩展字段
3.5.13
collectPoints
采集点列表
3.5.13.1
cpCode
String
采集点编码
3.5.13.2
timestamp
String
时间戳
3.5.13.3
latitude
double
纬度
3.5.13.4
longitude
double
经度
3.5.13.5
passThrough
String
透传字段,可以是任意类型的字符串
{
"retCode": 0,
"msg": "OK",
"data": {
"timestamp": 1565944012784,
"requestSign": "c120897a9ada4ddd0d9e8fa4ba30e8e2e7421f2a",
"passThrough": "pt",
"recordsCount": 1,
"data": [{
"poiId": "74rn9xyz223453od",
"timestamp": 1565937855879,
"poiName": "zara",
"floorName": "1",
"bulid": "海岸城购物中心",
"area": "海岸城购物中心",
"address": "文心四路14",
"street": "文心四路14",
"region": "南山区",
"city": "深圳市",
"province": "广东省",
"collectExt": "ext",
"collectorId": "xxx",
"collectPoints": [{
"cpCode": "64rlglqelvncx38o",
"timestamp": 1565937973382,
"latitude": 22.549247,
"longitude": 113.943889,
"passThrough": "pt"
}]
}]
}
}
10 采集删除结果(DeleteResponseData)的说明
序号
字段
数据类型
说明
1
retCode
Integer
业务码。 0:定位成功,包含结果; >0:参见业务码说明。
2
msg
String
业务码辅助提示信息。 有定位结果:"OK"; 无定位结果或其他:参 见业务码说明。
3
data
返回数据实体
3.1
requestSign
String
请求签名
3.2
timestamp
String
接口响应时间戳(ms)
3.3
passThrough
String
透传字段
{
"retCode": 0,
"msg": "OK",
"data": {
"requstSign": "d27b6101beaf0e0cf2898c938472a26b1005dc77",
"timestamp": 1565937976253,
"passThrough": "pt"
}
}
11 采集和定位结果码说明
retCode
msg
remark
0
OK
成功
100001
System error
服务器错误
100002
Environment error
环境错误
100003
Miss required parameter
缺少必传参数
100004
Parameter value invalid
参数格式错误
100005
Sign error
签名错误
100006
Package name error
包名错误
100007
Request data is null
请求数据为空
100008
Lack authorization
限制访问。缺少头部授权信息
100009
Restricted access.App TPS reach limit
限制访问。应用每秒事务数达到上限
100010
Restricted access.Transaction reach daily limit
限制访问。达到每天事务数配额上限
100011
Restricted access.TPS reach limit
限制访问。Server tps 达到上限
10002001
Illegal oid.Fake oid
疑似虚假设备号
10002002
Illegal oid.Oid request frequency is too high
高频请求
201001
No result
定位失败
203004
AppId invalid
AppId无效
203005
App is disabled
App不可用
203006
App type error
App类型错误
206001
Lack of required POI fields
缺少必须的poi字段
206002
POI field too long
poi字段太长
206003
Containing sensitive words
包含敏感词
206004
Collect is turned off
UGC采集未开启
206005
Collect reach daily limit
UGC采集每日配额达到上限
206006
PoiCode value invalid
poiCode无效
206007
PoiCode value invalid
poiCode无效
206008
PoiCode and collector do not match
poiCode和collectId不匹配
206009
Data does not exist or has been deleted
POI不存在或已经删除
206010
The value of CP should be greater than 0
当前页应该大于0
206011
The value of PS should be greater than 0
每页页大小应该大于0
206012
The value of province containing sensitive words
省包含敏感词
206013
The value of city containing sensitive words
城市包含敏感词
206014
The value of region containing sensitive words
区域包含敏感词
206015
The value of street containing sensitive words
街道包含敏感词
206016
The value of address containing sensitive words
地址包含敏感词
206017
The value of area containing sensitive words
商圈包含敏感词
206018
The value of building containing sensitive words
楼宇包含敏感词
206019
The value of floorName containing sensitive words
楼层名称包含敏感词
206020
The value of poi name containing sensitive words
POI名称包含敏感词
206021
The value of ext containing sensitive words
扩展字段包含敏感词
206023
The value of ext must be Json
扩展字段必须是Json格式的
300001
Prepare launch resources error
SDK准备请求资源失败
300002
The location response parse error
SDK解析定位结果数据失败
300004
No http message
SDK检测定位结果中没有msg信息
300005
No available network
SDK检测没有可用的网络
300006
Data verify failed
SDK检测定位请求数据不符合要求
300007
Inner error
SDK内部执行流程出现异常
300008
Http header is error
SDK检测Http请求头错误
300009
Sign error
SDK检测签名错误
300010
Http request timeout
SDK请求定位超时
300011
Http other error
SDK 请求http 出错
300015
the collect response parse error
SDK检测采集请求数据不符合要求
300016
the query request json error
SDK检测采集查询请求数据不符合要求
300017
the query request other error
SDK检测采集查询请求数据其他错误
300018
the query response parse error
SDK检测采集查询响应数据解析失败
300019
the delete request json error
SDK检测采集删除请求数据不符合要求
300020
the delete request other error
SDK检测采集删除请求数据其他错误
300021
the delete response parse error
SDK检测采集删除响应数据解析失败