indoorLocation

来自于:数位传媒科技 立即使用

startLocation registerLocationListener registerCycleLocationListener unregisterLocationListener unregisterCycleLocationListener

概述

简介

欢迎您使用数位传媒科技的场景识别模块,使移动设备应用快速具备获取用户室内精准场景识别的能力。

目前仅支持Android平台

获取AppId与AppKey

场景识别SDK需要数位授权的AppId和AppKey,开发测试使用的AppId和AppKey由数位提供。在使用模块之前,您需要申请您的应用的AppId和AppKey,申请的权限分别的为测试权限和正式权限,测试权限请求300次/天,正式权限请求2000次/天。请阅读资质审核要求及下载服务申请表格,填写相关信息后发送邮件至bd@nf-3.com邮箱。

服务增额申请

如果您在使用本模块的过程中,限定的请求次数不能满足您的需求,您可以下载服务增额申请表,填写相关信息后发送邮件至bd@nf-3.com邮箱。

资质审核

  • 个人开发者,需提供身份证正反面照片,要求图像清晰,文字清晰,不可残缺。
  • 企业开发者,需提供营业执照、法人身份证正反面照片,要求图像清晰,文字清晰,不可残缺。

开发指南

设置config.xml文件

您的应用使用模块时,需要在您应用的config.xml中确保以下参数配置。

  1. <preference name="autoUpdate" value="true" />
  2. <preference name="smartUpdate" value="true" />
  3. <preference name="debug" value="false" />
  4. <permission name="readPhoneState" />
  5. <permission name="location" />
  6. <permission name="fileSystem" />
  7. <permission name="internet" />
  8. <meta-data name="com.shuwei.location.APP_KEY" value="您申请的APP_KEY" />
  9. <meta-data name="com.shuwei.location.APP_ID" value="您申请的APP_ID" />
  10. <meta-data name="debugMode" value="false"/>

其中的debugMode参数,为模块的调试参数,帮助您在应用模块的前期,调试返回的数据。您的应用在正式发布时,请确定该参数设置为false

权限配置

为了不影响您应用的用户体验,场景识别模块不会主动申请权限(申请权限会弹对话框),模块只会检查您的应用有没有相关的权限。

为了保证您的应用正常运行,请保证应用的minSdkVersion=14及其以上。用户使用您的应用时,如果不打开位置权限,我们将无法返回场景识别数据。

接口文档

startLocation

主动发起场景信息请求

startLocation(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: "" //string, 成功码
  3. msg: "" //string,成功信息
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code : 0 //int, 错误码
  3. msg : "" //string, 错误信息
  4. }

详见返回信息:启动码说明

registerLocationListener

获取主动场景信息的返回结果,请在apiready中使用该方法。

registerLocationListener(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. timestamp: "" //string, 请求结果的时间戳
  3. city: "" //string,城市
  4. region: "" //string, 区域
  5. area: "" //string, 商圈
  6. name: "" //string, 名称
  7. tag: "" //string, 标签
  8. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code : 0 //int, 错误码
  3. msg : "" //string, 错误信息
  4. }

详见返回信息:结果码说明

registerCycleLocationListener

模块会隔一定周期(5分钟)进行一次场景触发,开发者不需要执行任何触发操作,如果需要得到周期的触发的结果,注册此接口。不需要此结果,则不注册此接口,模块也不会和服务器发起请求。请在apiready中使用该方法。

registerCycleLocationListener(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. timestamp: "" //string, 请求结果的时间戳
  3. city: "" //string,城市
  4. region: "" //string, 区域
  5. area: "" //string, 商圈
  6. name: "" //string, 名称
  7. tag: "" //string, 标签
  8. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code : 0 //int, 错误码
  3. msg : "" //string, 错误信息
  4. }

详见返回信息:结果码说明

unregisterLocationListener

注销主动场景触发的回调

unregisterLocationListener()

unregisterCycleLocationListener

注销定期场景触发的回调

unregisterCycleLocationListener()

示例代码

  1. var indoorLocation = null;
  2. apiready = function() {
  3. indoorLocation = api.require("indoorLocation");
  4. console.log(indoorLocation);
  5. indoorLocation.registerLocationListener(function(ret, err) {
  6. if (ret) {
  7. console.log(JSON.stringify(ret));
  8. var locationData = ret;
  9. $('#locate_subtitle').nextAll().remove();
  10. for (var key in locationData) {
  11. var str = '<p class="mc-text">';
  12. str += key + ":" + locationData[key];
  13. str += '</p>';
  14. $('#locate_info').append(str);
  15. }
  16. } else {
  17. $('#locate_subtitle').nextAll().remove();
  18. alert(JSON.stringify(err));
  19. console.log(JSON.stringify(err));
  20. }
  21. });
  22. indoorLocation.registerCycleLocationListener(function(ret, err) {
  23. if (ret) {
  24. console.log(JSON.stringify(ret));
  25. $('#recycle_locate_subtitle').nextAll().remove();
  26. for (var key in ret) {
  27. var str = '<p class="mc-text">';
  28. str += key + ":" + ret[key];
  29. str += "</p>";
  30. $("#recycle_locate_info").append(str);
  31. }
  32. } else {
  33. alert(JSON.stringify(err));
  34. }
  35. });
  36. }
  37. function startLocation() {
  38. indoorLocation.startLocation(function(ret, err) {
  39. if (ret) {
  40. console.log(JSON.stringify(ret));
  41. } else {
  42. console.log(JSON.stringify(err));
  43. }
  44. });
  45. }
  46. function unregisterLocation() {
  47. $('#locate_subtitle').nextAll().remove();
  48. indoorLocation.unregisterLocationListener();
  49. }
  50. function unregisterRecycleLocation() {
  51. $('#recycle_locate_subtitle').nextAll().remove();
  52. indoorLocation.unregisterCycleLocationListener();
  53. }

结果码说明

retCodemsgremark
0OK成功
100001System error服务器错误
100002Environment error环境错误
100003Miss required parameter缺少必传参数
100004Parameter value invalid参数格式错误
100005Sign error签名错误
100006Package name error包名错误
100007Request data is null请求数据为空
100008Lack authorization限制访问。缺少头部授权信息
100009Restricted access.App TPS reach limit限制访问。应用每秒事务数达到上限
100010Restricted access.Transaction reach daily limit限制访问。达到每天事务数配额上限
100011Restricted access.Transaction reach daily limit限制访问。达到每天事务数配额上限
201001No result定位失败
203004AppId invalidappId无效
203005App is disabledapp不可用
203006App type errorapp类型错误

启动码说明

codemsgremark
200OK启动请求成功
400Failed启动请求失败