iphone上的位置数据
Posted
技术标签:
【中文标题】iphone上的位置数据【英文标题】:location data on iphone 【发布时间】:2012-09-24 20:15:00 【问题描述】:我试图在我的应用程序中获取 iphone 的位置数据,但由于某种原因,我一直在我的 switch
块中点击 kclAuthorizationStatusNotDetermined
。
我知道在模拟器上启用了定位服务,并且我的 CLLocationManager
在我的头文件中声明,所以我知道它存在。
我的代码如下:
if ([CLLocationManager locationServicesEnabled])
//check if this app is allowed to access geolocation
switch ([CLLocationManager authorizationStatus])
case kCLAuthorizationStatusNotDetermined:
// do something
NSLog(@"Status not determined");
break;
case kCLAuthorizationStatusDenied:
//do something
NSLog(@"Status denied");
break;
case kCLAuthorizationStatusRestricted:
//do something
NSLog(@"Status restricted");
break;
case kCLAuthorizationStatusAuthorized:
[manager startUpdatingLocation];
CLLocation *currentCoords = [manager location];
NSString *location = [currentCoords description];
UIAlertView *gps = [[UIAlertView alloc]
initWithTitle:@"Current Location" message:location delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[gps show];
//getHails or getDetails();
break;
我错过了什么吗?提前感谢您的帮助
【问题讨论】:
【参考方案1】:根据Apple's Doc,kCLAuthorizationStatusNotDetermined
表示“用户尚未选择此应用程序是否可以使用位置服务。”我已经看到其他消息来源声称它可能发生在位置服务存在其他障碍时,例如为应用程序启用了位置服务但未在设备上打开。
如果位置服务已关闭或尚未为应用启用,ios 通常会提示用户。此外,如果用户之前拒绝了应用程序的定位服务,但无论如何您以编程方式启动定位服务,我认为用户会被提示打开它们。您是否看到了这种行为或其他不同的行为?
为了清楚起见,当您说位置服务已打开时,您检查了位置服务是否已在全球范围内打开,并且它们已为您的特定应用启用,对吗?
在模拟器中运行应用程序时,在重新安装之前从模拟器中完全删除应用程序可能会有所帮助,这样设置包将被删除。这应该会重新初始化您应用的位置服务的应用级授权的所有已保存状态。
编辑:
如果您没有看到提示您启用定位服务的弹出窗口,那么听起来您确实没有拨打[<your location manager instance> startUpdatingLocation]
。你确定会被调用吗?
【讨论】:
嗯,这很奇怪,因为模拟器上没有弹出窗口要求我为此应用程序授权定位服务,所以我想知道我的代码是否不正确?而且由于我没有弹出窗口,我没有得到任何位置数据,因此我的问题。 所以拨打[manager startUpdatingLocation];
并点击“允许”。以上是关于iphone上的位置数据的主要内容,如果未能解决你的问题,请参考以下文章
React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?