iOS 后台定位

2 篇文章 0 订阅
在U轨迹项目中,我们需要使用后台定位
首先,来理解一下iOS中的地图到底是高德还是百度,iOS中的地图其实是不一定的,
因为在每个国家,地图这样的信息是属于机密信息,肯定一定绝对是不允许泄露的,不然那还得了,
你说,是不是?好了,不扯了,正式进入话题。
iOS中的地图是根据你所在的国家,自动导入的该国家的地图信息,比如在中国可能是百度,
在国外有些是高德,有些则可能是那个国家所使用的地图版本。
接下来,需要聊一聊,后台定位的方式:
方式一:标准定位
方式二:基站定位
方式三:GPS定位
这里我就要推荐一篇博文了,我个人觉得写的真的很好。
http://blog.sina.com.cn/s/blog_7581a4c301015b27.html
当然他那篇文章中,转载的第一篇英文文章也写的很好,可以好好看看。
接下来,就是要上代码了,总不能聊理论吧
接着上一篇文章,这篇主要是讲如何实现后台定位。
需要在info.plist文件中设置两个字段。
后台需要运行的模式为定位

这里写图片描述

允许后台运行此App,不过不会运行很久,苹果给每个应用程序在后台运行的时间是有限制的,若是想一直运行,需要自己设置。之后会讲到。

这里写图片描述

怎么让应用程序按Home键后还能一直运行呢?
//更新位置
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

    //这个BOOL值来标记当前程序是否进入后台。
    BOOL isBackground = NO;

    //获得当前用户位置信息
    [self saveCurrentLoaction:locations];

    //判断当前应用程序是否进入后台
    if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
        //进入后台的标记
        isBackground = YES;
    }

    //进入后台进行的操作
    if (isBackground) {

        //获得当前用户位置信息
        [self saveCurrentLoaction:locations];

        //UIBackgroundTaskIdentifier是一个NSUInteger类型
        //这个bgTask是标志着在后台运行的一个请求(这里指在后台定位这么一个请求)
        //这里是让应用程序开始后台任务的执行,这里的block主要是处理因为其他导致应用程序截止处理,而需要结束后台任务。
        UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

            [[UIApplication sharedApplication] endBackgroundTask:bgTask];

        }];
    }
}
#pragma mark 获取当前用户位置
-(void)saveCurrentLoaction:(NSArray *)locations{
    //获取最新位置
    CLLocation *currentLocation = [locations lastObject];

    //根据最新位置,进行地理反编码
    CLGeocoder *gecoder = [CLGeocoder new];

    [gecoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

        //获取用户当前位置信息
        NSString *userLocationInfo = [[placemarks lastObject] name];

        }
}
以上,便实现了无限的后台定位功能。需要注意的一点是,如果是企业项目,可以把Required Background Modes设置为viop,即可,审核不用走AppStore流程。
如果是自己没事写的demo,想在AppStore上上线的话,一定一定一定要注意,需要给该App设置一个可以在进入后台能关闭后台运行的按钮,
比如说,你手机上的音乐,是不是在进入后台都能找到一个地方关闭音乐的播放,如果如果如果你没有这样设定的话,AppStore审核是不会让你的App上线的,
因为这样会很耗电,苹果是不允许你这样做的,所以呢,你一定要注意这一点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值