位置管理器不会更新 iPad 中的位置,但它可以在 iPhone 中运行

Posted

技术标签:

【中文标题】位置管理器不会更新 iPad 中的位置,但它可以在 iPhone 中运行【英文标题】:Location Manager does not update the location in iPad, but it is working in iPhone 【发布时间】:2018-04-11 12:01:23 【问题描述】:

较早 下面的代码在 iPad 和 iPhone 中都能正常工作。 但经过一段时间后,相同的代码在 iPad 中不起作用。问题是 iPad 总是显示相同的位置(纬度,经度),如果我不在那个位置。

-(void) getLocation

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    if ([CommonFunction checkForLocationService])
    
        [locationManager startUpdatingLocation];
        [locationManager requestWhenInUseAuthorization];
        strLatitude = [NSString stringWithFormat:@"%f",locationManager.location.coordinate.latitude];
        strLongitude = [NSString stringWithFormat:@"%f",locationManager.location.coordinate.longitude];
    

我已经在 info.plist 文件中添加了位置隐私密钥。

【问题讨论】:

只是猜测,请检查您是否静态添加了经纬度。在代码中...可能用于测试目的 不,我没有添加静态。 在您的 iPad 上,检查该应用是否已被授权使用 iPad 的位置信息。 是的,一切都检查过了 很抱歉回复延迟,但如果您还没有找到解决方案,您可以查看:appcoda.com/how-to-get-current-location-iphone-user 【参考方案1】:

第一:

您的代码错误。切勿向位置经理询问其位置。实现委托方法并在那里接收位置更新。您只需要告诉位置经理一次开始更新位置。委托方法将被重复调用。

第二:

位置确定不是魔术。它使用设备的内部硬件。您的 iPhone 和 iPad 具有非常不同的内部硬件。

您的 iPhone 是一部手机。它可以使用手机信号塔和 GPS 来确定其位置。因此,它几乎一直都知道它在哪里。

您的 iPad 没有任何硬件。它不是手机,也没有 GPS。它必须通过建立 WiFi 连接并在在线数据库中查找路由器位置来猜测它在哪里。只有在特殊情况下才能做到这一点。其余时间,它不知道它在哪里。

【讨论】:

@Paulw11 我没有提到 iPad。我只谈到了 OP 的实际 iPad。我建议他的 iPad 没有 GPS。 永远不要向位置经理询问其位置意味着我没有得到。 @马特。我也使用了委托方法,虽然它不起作用 我只知道你显示的代码,而你显示的代码是错误的

以上是关于位置管理器不会更新 iPad 中的位置,但它可以在 iPhone 中运行的主要内容,如果未能解决你的问题,请参考以下文章

更新控制器中的位置,而位置管理器在其他控制器中初始化

如果 App 在后台时调用 startUpdatingLocation,CLLocation 管理器不会更新位置 [重复]

如何从位置管理器只复制一次用户位置?

位置管理器的位置更新请求是不是仅在满足最小距离条件后才发生?

位置管理器不更新位置ios7

Qt学习四 - 布局管理器