繁体   English   中英

请求代码执行时,iOS不请求位置服务

[英]iOS not requesting location services when request code executes

我正在开发的iOS应用中发生一个奇怪的错误(目标C)。 我在对象内部使用位置服务,该对象已创建并存储为根视图控制器类的实例变量。 该对象在viewDidLoad方法中初始化。

if (sunEventObject == nil) {
  sunEventObject = [[SunEvent alloc] init];
}

[sunEventObject updateLocation];

我遇到了这样的问题,即应用程序在首次启动时不请求位置服务。 我已经在设备上运行该应用程序,同时使用Xcode和在

[locationManager requestAlwaysAuthorization];

线。 此行在SunEvent类中的一种用于刷新位置的方法中。 这行代码已执行,但该应用程序不请求位置服务权限。

解决方法是,将此代码放在didFinishLaunchingWithOptions方法的AppDelegate文件中。

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestAlwaysAuthorization];

此解决方法现在大部分时间都有效,但是偶尔在首次启动(重新下载该应用程序)时,仍未请求位置服务。

我不知道可能是什么问题。 同样,代码正在执行(我知道是因为使用Xcode调试了该应用程序),但是该应用程序并没有像应做的那样请求位置服务。

注意此应用程序仅适用于iOS 8.x系统。

更新 info.plist文件具有正确的密钥和NSLocationAlwaysUsageDescription密钥的描述,因此这不是问题。

多亏马特,他的回答才有用。 我的错误已修复!

他的评论:“在此处查看我的回答,以总结必须遵循的正确逻辑: stackoverflow.com/a/30495310/341994

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM