你能为CLLocationManager设置一个恒定的时间更新速率,以强制它连续每10秒更新一次位置吗?我知道距离过滤器的用法但是如果出现问题并且位置没有更新怎么办?谢谢!
我正在尝试实现一个CLLocationManager到我的应用程序,我得到以下编译时错误.
视图控制器viewDidLoad方法中的代码:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
Run Code Online (Sandbox Code Playgroud)
错误:
_OBJ_CLASS_$_CLLocationManager," referenced from Obj-c-class-ref in AboutLocationViewController.o
_kCLLocationAccuracyBest," referenced from:
-[AboutLocationViewController viewDidLoad] in AboutLocationViewController.o
Symbol(s)not found for architecture arm7
Collect2: Id returned 1 exit status
Run Code Online (Sandbox Code Playgroud) 这是一个可怕的错误.使用CLLocationManger时,无论是使用startUpdatingLocation还是使用ALAsset方法来访问照片的元数据,系统都会按预期提示进行位置访问...但是一旦显示,提示就会消失.我找不到这个的原因,我希望别人有这个问题.其他警报(例如显示UIAlertView)不会发生这种情况.
我甚至可以设置目的属性,然后显示,但只是暂时,它只是关闭自己.
这对我来说是个大问题,因为我需要获得许可才能使用照片元数据.
我试图使用CLLocationCoordinate2D获取用户的当前位置.我希望格式的值如
CLLocationCoordinate2D start = {-28.078694,153.382844};
所以我可以使用它们如下:
NSString *urlAddress = [NSString
stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
start.latitude, start.longitude,
destination.latitude, destination.longitude];
Run Code Online (Sandbox Code Playgroud)
我用了
CLLocation *location = [[CLLocation alloc]init ];
CLLocationDegrees currentLatitude = location.coordinate.latitude;
CLLocationDegrees currentLongitude = location.coordinate.longitude;
Run Code Online (Sandbox Code Playgroud)
获得当前的lat和long.
但是当我尝试测试时,我得到了0.000.我在iPhone 4s上测试.
如果有任何示例代码,那就太棒了.
我想在我的应用程序后台运行一个进程,该进程获取用户当前的纬度/经度(每隔5分钟)并通过Web服务调用将其报告给我们的服务器.当我向info.plist添加所需的背景模式时,我有以下选项:
-App plays audio
-App registers for location updates
-App provides Voice over IP services
现在在我的情况下,我显然需要在列表上的第二个选择,但一旦我有位置我可以用它做什么?我可以在后台进行Web服务调用吗?还有什么其他限制?
非常感谢!
我正在使用[CLLocationManager locationServicesEnabled]函数来获取是否启用位置服务的状态.我保留了viewDidLoad方法代码.
if(![CLLocationManager locationServicesEnabled])
{
NSLog(@"No");
}
else
{
NSLog(@"Yes");
}
Run Code Online (Sandbox Code Playgroud)
当我第一次运行这个应用程序时它会返回Yes.为什么?它应该归还我No.当我没有选择"允许"或"不允许"选项时就是这种情况.意味着我既不允许也不允许,但viewDidLoad我得到了Yes.
现在我选择"不允许"并再次加载它viewController.在这个时候,至少它应该归还我No,但我仍然得到了Yes.为什么?
这么多困惑CLLocationManager.
有任何想法吗?
我们正在制作一个与iOS 8兼容的应用程序,但与此同时,我们的一些开发人员还没有Xcode 6,因此他们在尝试调用时遇到此错误
[self.locationManager requestAlwaysAuthorization];
Run Code Online (Sandbox Code Playgroud)
即使它在if里面
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) {
[self.locationManager requestAlwaysAuthorization];
}
Run Code Online (Sandbox Code Playgroud)
我们怎么解决这个问题才能在Xcode 5上编译?
我刚刚将应用程序的目标版本更改为iOS 8,并将我的XCode更新为6.0版本.当我构建时,我看到一堆方法被标记为已弃用,这证实我实际上是针对iOS 8.0构建的,但是当我尝试调用[CLLocationmanager requestWhenInUseAuthorization]时,我得到一个构建错误,说明 没有已知的选择器'requestWhenInUseAuthorization'的类方法
我在这里错过了什么吗?
我开始对MapKit感到非常沮丧.首先,我有
if (manager.authorizationStatus == kCLAuthorizationStatusAuthorizedWhenInUse) {
}
Run Code Online (Sandbox Code Playgroud)
哪个是无法构建的,因为它说"在'CLLocationManager*'类型的对象上找不到"属性'authorizationStatus'.严重吗?因为我不仅确定CLLocationManager应该具有根据Apple文档https://的authorizationStatus属性developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html但它也会在我输入时自动填充属性.我真的不知道现在该做什么.
最重要的是,我有
if (!manager) {
NSLog(@"manager created in viewDidLoad");
manager = [[CLLocationManager alloc]init];
manager.delegate = self;
[manager requestWhenInUseAuthorization];
NSLog(@"manager is supposed to ask for permission");
}
Run Code Online (Sandbox Code Playgroud)
并且两个NSLog语句都被调用,但是没有要求授权,因此我收到错误.是的,我还在我的plist文件中添加了必要的密钥字符串,因为该应用程序正在我的手机上工作,但在其他人的手机上我收到此错误.唯一可能的解释是我在寻求许可之前尝试使用MapKit,但我已经彻底检查了这一点并且没有找到类似的东西.它甚至没有显示要求许可的警告框.
如果有人可以帮助解决这些问题,我们将不胜感激.直到那时我才无所事事,因为我已经尝试了一切.
编辑:我发现了问题.我有两个plist键NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription......只有其中一个略有错误.如果plist条目丢失或拼写不正确并且没有警告您,则Apple API不会进行调用.
难以置信.
我正在使用Xamarin.Forms并创建一个拥有后台服务的iOS应用程序,每10分钟获取一个位置.
代码正常,我的问题是当我在IPad上访问App配置时.它显示访问摄像机但不访问当前位置的权限.
我认为,当我提交应用程序进行审核时,这将是一个问题.
用于初始化位置:
this.locMgr = new CLLocationManager();
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
{
locMgr.RequestAlwaysAuthorization(); // works in background
//locMgr.RequestWhenInUseAuthorization (); // only in foreground
}
Run Code Online (Sandbox Code Playgroud)
获取位置:
if (CLLocationManager.LocationServicesEnabled)
{
if (CLLocationManager.Status==CLAuthorizationStatus.Authorized
|| CLLocationManager.Status==CLAuthorizationStatus.AuthorizedAlways)
{
//set the desired accuracy, in meters
LocMgr.DesiredAccuracy = 1;
LocMgr.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) =>
{
_currentLocation = (e.Locations[e.Locations.Length - 1]);
};
LocMgr.AuthorizationChanged += (object sender, CLAuthorizationChangedEventArgs e) =>
{
if (e.Status == CLAuthorizationStatus.Denied
|| e.Status == CLAuthorizationStatus.Restricted)
{
LocMgr.StopUpdatingLocation();
_currentLocation = null;
}
};
LocMgr.StartUpdatingLocation(); …Run Code Online (Sandbox Code Playgroud) ios ×7
iphone ×4
objective-c ×2
cllocation ×1
geolocation ×1
ios5 ×1
ios8 ×1
mapkit ×1
mkmapview ×1
multitasking ×1
viewdidload ×1
xamarin ×1
xcode ×1