iOS 执行请求代码时不请求定位服务
iOS not requesting location services when request code executes
我正在开发的 iOS 应用程序 (Objective C) 中出现了一个奇怪的错误。我在创建并存储为根视图控制器 class 的实例变量的对象中使用位置服务。此对象在 viewDidLoad 方法中初始化。
if (sunEventObject == nil) {
sunEventObject = [[SunEvent alloc] init];
}
[sunEventObject updateLocation];
我一直在运行解决应用程序在首次启动时不请求位置服务的问题。我的设备上有 运行 应用程序,同时使用 Xcode 调试并在
上设置了断点
[locationManager requestAlwaysAuthorization];
行。此行存在于 SunEvent class 中指定用于刷新位置的方法中。这行代码执行了,但是应用没有请求位置服务权限。
作为解决方法,我将此代码放在我的 AppDelegate 文件中的 didFinishLaunchingWithOptions 方法中。
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestAlwaysAuthorization];
此解决方法现在大部分时间都有效,但偶尔在首次启动(应用程序的全新下载)时,仍未请求定位服务。
我不知道问题出在哪里。同样,代码正在执行(我知道是因为使用 Xcode 调试应用程序)但应用程序并没有像它应该做的那样请求定位服务。
注意 此应用仅针对 iOS 8.x 系统开发。
更新 info.plist 文件具有正确的键和 NSLocationAlwaysUsageDescription 键的描述,所以这应该不是问题。
感谢马特,他的回答奏效了。我的错误已修复!
他的评论:
"See my answer here summarizing the correct logic that you must follow: "
我正在开发的 iOS 应用程序 (Objective C) 中出现了一个奇怪的错误。我在创建并存储为根视图控制器 class 的实例变量的对象中使用位置服务。此对象在 viewDidLoad 方法中初始化。
if (sunEventObject == nil) {
sunEventObject = [[SunEvent alloc] init];
}
[sunEventObject updateLocation];
我一直在运行解决应用程序在首次启动时不请求位置服务的问题。我的设备上有 运行 应用程序,同时使用 Xcode 调试并在
上设置了断点[locationManager requestAlwaysAuthorization];
行。此行存在于 SunEvent class 中指定用于刷新位置的方法中。这行代码执行了,但是应用没有请求位置服务权限。
作为解决方法,我将此代码放在我的 AppDelegate 文件中的 didFinishLaunchingWithOptions 方法中。
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestAlwaysAuthorization];
此解决方法现在大部分时间都有效,但偶尔在首次启动(应用程序的全新下载)时,仍未请求定位服务。
我不知道问题出在哪里。同样,代码正在执行(我知道是因为使用 Xcode 调试应用程序)但应用程序并没有像它应该做的那样请求定位服务。
注意 此应用仅针对 iOS 8.x 系统开发。
更新 info.plist 文件具有正确的键和 NSLocationAlwaysUsageDescription 键的描述,所以这应该不是问题。
感谢马特,他的回答奏效了。我的错误已修复!
他的评论:
"See my answer here summarizing the correct logic that you must follow: