美文网首页程序员计算机微刊
后台持续定位,实时上传坐标

后台持续定位,实时上传坐标

作者: 奴良 | 来源:发表于2017-08-22 11:13 被阅读112次
background.jpg

项目配置

  • 1: 需在项目配置中开启如下权限


    setting
  • 2:在info.plist中添加 NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription

实现部分代码

demo点这里

//定位 相关参数设置
- (CLLocationManager *)locManager
{
    if (!_locManager) {
        _locManager = [[CLLocationManager alloc] init];
        if ([_locManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
            _locManager.allowsBackgroundLocationUpdates = YES;
        }
        _locManager.pausesLocationUpdatesAutomatically = NO;
        _locManager.distanceFilter = kCLDistanceFilterNone;
        _locManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
    }
    return _locManager;
}

- (void)startLocation
{    
    if ([CLLocationManager locationServicesEnabled] == NO) {
        NSLog(@"locationServicesEnabled false");
    } else {
        CLAuthorizationStatus authorizationStatus= [CLLocationManager authorizationStatus];
        
        if(authorizationStatus == kCLAuthorizationStatusDenied || authorizationStatus == kCLAuthorizationStatusRestricted) {
            NSLog(@"authorizationStatus failed");
        } else {
            NSLog(@"authorizationStatus authorized");
            self.locManager.delegate = self;
            
            [self.locManager requestAlwaysAuthorization];
//            [self.locManager requestWhenInUseAuthorization];
            [self.locManager startUpdatingLocation];
}   

//回调
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
    if (![self canUpload]) return;
    
    CLLocation *loc = locations.firstObject;
    
    NSLog(@"----- i = %d, 维度: %f, 经度: %f", i++, loc.coordinate.latitude, loc.coordinate.longitude);
    
    //上传定位
    [self uploadLocation:loc.coordinate];
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"定位失败: %@", error);
}

- (BOOL)canUpload
{
    CFTimeInterval t = CACurrentMediaTime();
    if (t - self.lastUpdateTime > _interval) {
        self.lastUpdateTime = t;
        return YES;
    }
    return NO;
}

效果图

foreground.png lock.jpg

后言

由于截图是在位置不变的情况下进行的测试,位置不变,定位回调会间隔有点长,可能不会每60s(所设置的时间间隔)就回调一次, 但是如果在室外位置移动的情况及设置 _locManager.desiredAccuracy = kCLLocationAccuracyBest; 的情况下, 几乎可以达到每秒定位回调成功一次。

相关文章

  • 后台持续定位,实时上传坐标

    项目配置 1: 需在项目配置中开启如下权限setting 2:在info.plist中添加 NSLocationA...

  • IOS后台定位以及位置上传方案

    IOS后台定位以及位置上传方案 iOS定位原理和使用建议 iOS后台持续定位并定时上传 iOS 通过定位获取常驻后...

  • swift3.0 后台定位功能

    公司需求后台定位,间隔五分钟后台上传坐标信息,这里主要把后台定位功能整理了一下。plist 的权限设置 这里就不具...

  • 后台定位上传实践

    前言 我现在做的是LBS定位的社交APP 其中主要的一个功能就是能够实时定位社交圈中各个成员的位置后台实时上传位置...

  • 微信小程序后台持续定位功能使用详解

    小程序后台持续定位功能和联系定位的接口从上到下分别是1.wx.onLocationChange//监听位置实时变化...

  • 实时向服务器发送最新位置

    开启后台定位,实时向服务器发送最新位置 第一步,开启后台模式,选中定位,选择project --> capabil...

  • IOS 后台定位上传

    APP开发中经常需要使用到后台定位上传功能,在IOS中可通过CLLocationManage类来实现。其中后台定位...

  • iOS后台运行-实时定位

    1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动。 不活动-应用程序处于前台但不再接...

  • Android应用保活实践

    最近在做的项目中需要app在后台常驻,用于实时上传一些健康信息数据,便于后台实时查看用户的健康状况。自从Andro...

  • Android应用保活实践

    最近在做的项目中需要app在后台常驻,用于实时上传一些健康信息数据,便于后台实时查看用户的健康状况。自从Andro...

网友评论

    本文标题:后台持续定位,实时上传坐标

    本文链接:https://www.haomeiwen.com/subject/fogkdxtx.html