在 ionic 3 中使用后台地理位置无法将位置数据更新到服务器中

Posted

技术标签:

【中文标题】在 ionic 3 中使用后台地理位置无法将位置数据更新到服务器中【英文标题】:Updating location data into the server is not working using background geo locaion in ionic 3 【发布时间】:2019-12-27 11:15:17 【问题描述】:

我正在使用https://github.com/mauron85/cordova-plugin-background-geolocation。它在前台提供位置详细信息,并在应用程序关闭时提供调试消息,但它不会将位置详细信息更新到前台和后台的服务器中。

提前致谢

const config: BackgroundGeolocationConfig = 
    desiredAccuracy: 10,
    stationaryRadius: 10,
    distanceFilter: 10,
    debug: false,
    stopOnTerminate: false,
    startForeground: true,
    notificationTitle: 'location tracking',
    notificationText: 'Active',
    interval: 60000,

    url: localStorage.getItem('api_base_url')+'user/currentlocation',
    syncUrl:localStorage.getItem('api_base_url')+'user/currentlocation',
    httpHeaders: 
      'Content-Type': 'application/json'
    ,
    postTemplate: 
      lat: '@latitude',
      lon: '@longitude',
      user_id: '1',
      currentDate: '12-12-2019',
      address: 'test',
    
    ;

this.backgroundGeolocation.configure(config)
  .then(() => 

    this.backgroundGeolocation.on(BackgroundGeolocationEvents.location).subscribe((location: BackgroundGeolocationResponse) => 
      console.log(location);
    );

  );

this.backgroundGeolocation.start();

【问题讨论】:

【参考方案1】:

Background geo location post template

请记住,当 postTemplate 为 jsonObject 且数组数组为 jsonArray 时,所有位置(甚至是单个位置)都将作为对象数组发送!

在服务器端,我将 JSON 对象更改为对象数组。

例如,


  "user_id": "1",
  "lon": "13.2",
  "lat": "82.3"

我把上面的JSON对象改成下面的

[
  "user_id": "1",
  "lon": "13.2",
  "lat": "82.3"
]

【讨论】:

以上是关于在 ionic 3 中使用后台地理位置无法将位置数据更新到服务器中的主要内容,如果未能解决你的问题,请参考以下文章

在后台获取 Ionic/Cordova 应用程序的位置

地理位置 Ionic 3 始终返回“”

无法在后台服务中使用 LocationManager 获取位置

无法在 iOS 11 上获取后台位置更新

cordova-ionic 应用程序在后台进行地理定位 - android 和 ios

使用Ionic 3在地理位置拖动标记后获取位置(纬度和经度)?