Tag: cllocationmanager

iOS:我可以手动将wifinetworking与地理位置关联吗?

是否有可能使手机“知道”一个特定的无线networking在特定的地理位置? if (answer == YES) { than how? } else { can the phone figure this out by himself? } 另一个类似的问题:有什么办法可以开始监视一个精度为100米的区域,但是告诉CLLocationManager 只能通过wifinetworking和蜂窝天线来使用吗? 因为我不想加电GPS,不pipe… 谢谢!

如果后台应用程序无法自动启动,Cardcase如何在某个位置启动?

Cardcase应用程序可让您知道您是否与前一个关系相关的商店(如果您已设置付款标签等)。 如果后台运行的应用程序无法在设备启动时自动启动,该应用程序如何工作? 编辑使我的问题更清晰:我不问如何监视位置更改或如何监视位置更改在后台。 我的问题是,如果用户安装这个应用程序,然后添加一些标签的一些位置,然后他们重新启动他们的iPhone,然后这个应用程序如何随后通知他们,如果应用程序启动时不支持的位置, 这个应用程序(以及任何其他应用程序)是否必须依赖于在每次重新启动设备后用户明确地启动它?

horizo​​ntalAccuracy究竟意味着什么?

我正在使用位置服务的iOS应用程序。 在实验物理学的背景下,我想知道在locationManager:didUpdateToLocation:fromLocation:find的locationManager:didUpdateToLocation:fromLocation:究竟是什么horizontalAccuracy locationManager:didUpdateToLocation:fromLocation:代表。 文档有点稀疏 我假设准确性给出了基于高斯(或泊松?)分布的置信区间。 因此,在一定概率下,实际位置在horizontalAccuracy精度半径的圆内,但也可以在该区域外。 那么问题是:这个概率有多大? 如果horizontalAccuracy对应于1σ,那么我将有一个概率为68%的horizontalAccuracy精度在这个圆圈内,但是反过来看,在接近三分之一的情况下,实际的位置将在这个区域之外。 因此,在某些情况下,我宁愿用2σ( 2*horizontalAccuracy )甚至3σ( 3*horizontalAccuracy )来计算。 简而言之:有什么迹象表明,哪个置信区间horizontalAccuracy有? 对所有回应“苹果说它在…之内”的人说:呃 – 测量不准确。 它必须有一定的不确定性。 如果你经常重复测量,你会得到一个结果分布 – 可能是一个高斯分布。 这个高斯具有一定的宽度,这对应于测量的不确定性水平。 经常测量位置会降低不确定性,从而提高准确性,但绝对不会给你一个明确的间隔,确保实际的位置。你只会得到一个概率。 但是,如果精度是3sigma,我们有99.7% – 这是接近一定的。 简而言之 – 我怀疑苹果的文档。

地理位置和当地通知一样提醒

我想实施地理位置通知,如应用程序提醒。 这是我已经做了: 在App委托中: self.locationManager = [[[CLLocationManager alloc] init] autorelease]; /* don't leak memeory! */ [self.locationManager setDelegate:self]; [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; -(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { } -(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { } -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { } 而这个在视图控制器中的女巫开始监视: CLLocationCoordinate2D location2D = mapView.region.center; CLRegion *regionForMonitoring = [[CLRegion alloc] initCircularRegionWithCenter:location2D radius:1 identifier:@"RegionIdentifier"]; [[Utils getLocationManager] startMonitoringForRegion:regionForMonitoring]; 现在我不知道要用这些信息来触发本地通知。

CLLocationManager geo-fencing / startMonitoringForRegion:vs. startMonitoringForSignificantLocationChanges:与10分钟的startUpdating调用

我试图设置一个应用程序,可以在后台检查人员的位置,看他们是否在一个给定的位置,并发送ping一个服务器,如果他们是。 我们不想浪费用户的精力,所以我们试图找出最好的解决scheme。 我已经做了大量的阅读,我还没有find关于这些方法的很多信息。 我现在要理解他们的优点和缺点 startMonitoringForSignificantChanges 说明:基于wi-fi和手机信号塔的变化,系统唤醒应用程序。 文件 : 一旦设备从先前的通知移动500米或更远,应用程序就可以预期发出通知。 它不应该比每五分钟一次更频繁地发出通知。 如果设备能够从networking中检索数据,则位置pipe理者更可能及时地发送通知。 优点: 电池效率最高 缺点: 取决于Wi-Fi /蜂窝塔的变化 只能假定这将被称为每200米至2公里(如果不是在某些地区更多) 更多的准确性 因此,不一致和不精确 10分钟的开始更新或“n分钟更新”: 说明:这基本上要求应用程序更多的时间,当额外的时间即将到期,它调用[self.locationManager startUpdating],抓住位置,并延伸了10多分钟的后台线程。 优点: 一贯 可以像你想要的一样准确,一如你所愿 缺点: 必须每隔十分钟或更短时间进行一次通话,以保持应用程序在后台运行(即n不能超过10次) 问题:这对电池有什么影响? 唤醒GPS并closures它会伤害电池吗? 我无法想象在后台运行一个简单的位置检查会消耗很多的电池…但是,我不知道什么是开动GPS和获得一个有用的信号。 startMonitoringForRegion(地理围栏): 简而言之,当你进入一个预定义的区域时,你的应用程序会被唤醒。 这是他们的古怪,这是更新的,它有更less的文件。 我无法很好地描述“系统监控”界限。 对于我所知道的,这是一个非常聪明的algorithm,或者他们经常ping GPS,这样做比其他方法效率低。 优点: 简单的实现 由系统pipe理,所以你不必发明自己的临时地理围栏只有触发边界过境…没有不必要的数据,只是抛出换取电池命中 因此,对于这类事情应该是最好的,准确的,由系统来pipe理 缺点: 人们质疑其有效性 巨大的矛盾是否对电池寿命有好处,或者是否会耗尽电池寿命。 系统如何监控这个! 基本上,不确定的行为。 我想我的问题归结为startMonitoringForRegion如何:与电池寿命,一致性和精确度的背景testing用户位置的这些其他方法相比。 有没有人彻底testing过这个? 或者在他们的应用程序中使用它,并至less得到一些反馈? 对我而言,可能的select是在地理围栏和10分钟的更新方法之间进行权衡。 (另外,苹果已经公开表示,iOS7将会有一些后台任务…这是否会改变这两种方法之间的权衡微积分?)有谁知道这两个比较? 非常感谢! 期待看到我们是否能够深入到如何比较这些方法。

检查iOS位置服务

我有一个地图和一个button的视图(如地图应用程序一次),允许用户居中和放大他在地图上的当前位置。 如果我不能使用locationServicesEnabled方法(总是返回YES),我应该创build一个BOOL属性来检查didFailWithError方法是否被调用,并知道我是否可以调用button方法? 谢谢阅读。 编辑: 这段代码对我不起作用。 我正在使用模拟器。 询问locationServicesEnabled时,我总是得到YES。 // Gets the user present location. – (IBAction)locateUser:(id)sender { if([CLLocationManager locationServicesEnabled]) { CLLocationCoordinate2D coordinate; coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude; coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude; [self zoomCoordinate:coordinate]; } else { [[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show]; } }

iOS 9如何获取位置,即使应用程序终止

我明白如何在后台检索位置。 而且我明白, 即使应用在iOS中终止,即使终止连续位置更新 ,也有机会获取位置信息 但。 我有应用程序移动和Foursquare。 如果这个应用程序甚至没有运行(我终止所有的应用程序,没有运行的应用程序),然后我去'隐私'和改变这个应用程序位置禁用(从不),我可以看到状态栏中的箭头消失。 但是,当我启用位置更新(总是),箭头再次出现在状态栏和应用程序不运行在这一刻。 所以这个应用程序开始采取地点的信息。 怎么样? 即使有些日子没有推出MOVE,这个应用程序然后显示我过去的日子正确的路线。 他们如何检索过去几天的位置信息,即使应用程序不启动?

iOS 8 MKMapView用户位置请求失败

我一直试图移动我的iOS7应用程序与MKMapview支持iOS8。 但是,我无法得到用户分享他们的位置正常工作的新要求。 我在故事板上创build了我的MKMapView,并在iOS7上完成了代理设置并完美工作。 这是我已经添加到支持iOS8位置共享: myMapView.h #import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface myMapView : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate> @property (strong, nonatomic) IBOutlet MKMapView *mapView; @property (strong, nonatomic) CLLocationManager *locationManager; myMapView.m //Code omitted #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) //Code omitted – (void)viewDidLoad { [super viewDidLoad]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; if(IS_OS_8_OR_LATER) […]

CLLocationManager startUpdatingLocation不起作用

所以现在我至less得到以下代码的callback… – (void)viewDidLoad { [super viewDidLoad]; mapView=[[MKMapView alloc] initWithFrame:self.view.frame]; //mapView.showsUserLocation=TRUE; mapView.delegate=self; [self.view insertSubview:mapView atIndex:0]; NSLog(@"locationServicesEnabled: %@", [CLLocationManager locationServicesEnabled] ? @"YES":@"NO"); CLLocationManager *newLocationManager = [[CLLocationManager alloc] init]; [newLocationManager setDesiredAccuracy:kCLLocationAccuracyBest]; [newLocationManager setDistanceFilter:kCLDistanceFilterNone]; [self setLocationManager:newLocationManager]; [[self locationManager] setDelegate:self]; [[self locationManager] startUpdatingLocation]; NSLog(@"Started updating Location"); } – (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"Did update to location"); mStoreLocationButton.hidden=FALSE; […]

重大的位置变化不会在设备上触发

我正在使用重要的位置更改监控。 当我在模拟器中运行代码并检查Freeway选项时,我会定期更新位置。 我抓住这些更新,并将其保存在NSUserDefaults,并比每10秒更新tableview,所以我可以看到,如果我有任何更新。 如果我在真实的设备上运行应用程序,我得到零更新。 我把电话放在口袋里,走了80多公里,在两个城市。 零更新。 不知道我是否搞砸了。 我附上了代码。 代码是复制粘贴,随时testing。 只要确保在故事板中使用TableViewController并将单元ID设置为ID即可。 我错过了什么? 我正在testingiPhone 5。 info.plist中: 编辑:在苹果文档中find这个。 我的locationManager应该创build不同? 当由于位置更新而重新启动应用程序时,将启动选项字典传递给您的应用程序:willFinishLaunchingWithOptions:或application:didFinishLaunchingWithOptions:方法包含UIApplicationLaunchOptionsLocationKey项。 该键的存在表示新的位置数据正在等待传送到您的应用程序。 要获取这些数据,您必须创build一个新的CLLocationManager对象,并重新启动您的应用程序终止之前运行的位置服务。 当您重新启动这些服务时,位置pipe理器会将所有待处理的位置更新传递给其代理。 EDIT2: 基于此,位置应至less每15分钟更新一次。 我的代码中的错误确认。 如果GPS级精度对您的应用程序不是至关重要的,并且您不需要连续跟踪,则可以使用重大更改位置服务。 正确使用重大更改位置服务至关重要,因为它至less每隔15分钟就会唤醒系统和应用程序,即使没有发生位置更改,也会持续运行,直到您停止。 edit3:将此代码添加到AppDelegate didFinishLaunchingWithOptions:查看应用程序是否被唤醒。 它不会被唤醒 – 我在表格视图中看不到200 200条目。 有什么可疑的事情正在发生。 if let options = launchOptions { print("options") if (launchOptions![UIApplicationLaunchOptionsLocationKey] != nil){ locationManager.startUpdatingLocation() self.lat.append(Double(200)) self.lon.append(Double(200)) self.times.append(NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .ShortStyle)) NSUserDefaults.standardUserDefaults().setObject(lat, forKey: "lat") NSUserDefaults.standardUserDefaults().setObject(lon, […]