700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS 后台定位

iOS 后台定位

时间:2018-11-05 13:32:40

相关推荐

iOS 后台定位

在U轨迹项目中,我们需要使用后台定位

首先,来理解一下iOS中的地图到底是高德还是百度,iOS中的地图其实是不一定的,因为在每个国家,地图这样的信息是属于机密信息,肯定一定绝对是不允许泄露的,不然那还得了,你说,是不是?好了,不扯了,正式进入话题。iOS中的地图是根据你所在的国家,自动导入的该国家的地图信息,比如在中国可能是百度,在国外有些是高德,有些则可能是那个国家所使用的地图版本。

接下来,需要聊一聊,后台定位的方式:

方式一:标准定位方式二:基站定位方式三:GPS定位这里我就要推荐一篇博文了,我个人觉得写的真的很好。/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上线的,因为这样会很耗电,苹果是不允许你这样做的,所以呢,你一定要注意这一点。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。