0.1.6 • Published 7 years ago

cordova-baidu-yingyan v0.1.6

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

#百度鹰眼cordova插件 cordova-baidu-yingyan

百度鹰眼是集轨迹追踪、轨迹数据存储、轨迹处理与查询的一套完整轨迹管理开放服务,通过覆盖多平台的SDK、API以及强大的云端服务,帮助开发者轻松开发人员和车辆轨迹追踪系统。 使用百度鹰眼,您可以轻松开发出一套适用于车队监控、外业人员监管、儿童防丢领域的轨迹管理产品。

百度的鹰眼系统

下载安装

cordova plugin add cordova-baidu-yingya

配置

config.xml

*

xmlns:android="http://schemas.android.com/apk/res/android"

add it to config.xml widget tag, otherwise you may encounter issue, AAPT: Error parsing XML: unbound prefix when you build android app.

*

<preference name="UseLegacySwiftLanguageVersion" value="true" />

添加到config.xml里以支持swift2.3,因为百度的SDK使用的是swift 2.3。

*

<preference name="android-targetSdkVersion" value="21" />

默认情况下,cordova工程的targetSdkVersion会取你开发环境里所有的sdk里最新版本。而如果你开发环境里的最新的sdk版本>=23的话,你就会遇到android6.0上,app不会向你主要要权限的问题,原因涉及android6.0的动态权限。添加以上的配置,会强制targetSdkVersion为21。

设置ak和mcode

android

需要在config.xml里添加下面的配置来配置您的AK:

config.xml:

  <platform name="android">
    <config-file target="AndroidManifest.xml" parent="./application">
      <meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="你的android AK" />
    </config-file>
  </platform>

ios

config.xml里添加如下代码,配置AK和Mcode:

  <preference name="BaiduTraceIOSAK" value="你的IOSAK" />
  <preference name="BaiduTraceIOSMCode" value="你的Mcode" />

js API

  • 设置打包间隔和传间隔

    cordova.baiduTrace.setInterval(gatherInterval, packInterval).then(successCb, errorCb)
    
      gatherInterval:打包间隔,单位:秒
      packInterval:上传间隔,单位:秒
    
      ios限制:
        - gatherInterval 最小为2, 最大为60秒
        - packInterval 最小为2, 最大为60秒
        - 打包周期必须比采集周期大,且必须是采集周期的整数倍
    
      android限制:
        - gatherInterval 最小为2秒,最大为5分钟,否则设置不成功,默认值为5s。
        - packInterval 打包时间间隔必须为采集时间间隔的整数倍,且最大不能超过5分钟,否则设置不成功,默认值为30s。
        - 受打包数据协议最多支持10个轨迹数据的限制,请尽量控制一个打包周期内的轨迹点数量在10个以内,也就是打包周期不要超过采集周期的10倍。
  • 设置定位方式(只有android支持)

    cordova.baiduyingyan.setLocationMode(locationMode).then(successCb, errorCb)
    
      locationMode:
            * 0:高精度定位模式,GPS与网络综合定位
            * 1:低功耗定位模式,仅使用网络定位(WiFi和基站定位)
            * 2:仅使用设备(GPS)定位
  • 设置上传用的协议(只有android支持)

    cordova.baiduTrace.setProtocolType(type).then(successCb, errorCb)
    
      type: 获取定位的方式
          * 0:https类型
          * 1:http类型
  • 开始采集

      cordova.baiduTrace.startTrace(entityName, serviceId, operationMode, customAttr)
        .then(successCb, errorCb)
    
        entityName: 实例名
        serviceId: 服务ID
        operationMode: 操作模式
          * 0 : 不上传位置数据,也不接收报警信息
          * 1 : 不上传位置数据,但接收报警信息
          * 2 : 上传位置数据,且接收报警信息
        customAttr: 自定义属性, 见下面的栗子
  • 停止采集

      cordova.baiduTrace.stopTrace().then(successCb, errorCb)

栗子:

      cordova.baiduTrace.setInterval(2, 10).then(function() {
          console.log('setInterval OK');
      });

      cordova.baiduTrace.setLocationMode(0).then(function(){
        console.log('setLocationMode OK');
      });

      cordova.baiduTrace.setProtocolType(0).then(function(){
        console.log('setProtocolType OK');
      });

      cordova.baiduTrace.startTrace('cordova-test', '118XXX', '2',
        {
          'type': 'system',
          'workerId': 'senior'
        }).then(function () {
        // 调用成功
        console.log('leon', '开始')
        alert('开始收集')
      }, function (error) {
        // 调用
        alert('收集失败' + error);
      });

      cordova.baiduTrace.stopTrace().then(function(msg) {
        alert('停止收集成功:'+msg)
      }, function(error) {
        alert('停止收集失败:'+error)
      });

重试机制

app刚起来的时候如果调用鹰眼的这些api,可以会由于sdk还没有完全初始化导致,调用失败,所以最好给api都加入重试机制,这里是一个简单的angular版的例子:

angular.module('retryCall')
  .service('retryCall', function($q) {
    this.run = function(fn, ...params) {
      let defer = $q.defer()
      let retryTimes = 3
      let count = 0

      function doSafeCall() {
        fn.apply(null, params).then((value) => {
          defer.resolve(value)
        }, (error) => {
          if(count++ < 3) {
            console.log(`will retry ${fn} in 10 second`)
            window.setTimeout(() => {
              doSafeCall()
            }, 10000)
          } else {
            defer.reject()
          }
        })
      }

      doSafeCall()
      return defer.promise
    }
  })

调用的api的时候,这样写:

retryCall.run(cordova.baiduTrace.startTrace, entityName, serviceId, operationMode).then(() => {
  console.log('startTrace OK')
}, (error) => {
  console.error(`startTrace for ${cellphone} fail`, error)
})

Next

提供更多接口 用swift重写ios代码

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago