iOS 8에서 위치 서비스가 작동하지 않음
iOS 7에서 정상적으로 동작하던 앱이 iOS 8 SDK에서는 동작하지 않습니다.
CLLocationManager
로케이션을 반환하지 않고 [설정]-> [로케이션 서비스]아래에 앱이 표시되지 않습니다.그 문제에 대해 구글을 검색해 봤지만 아무 것도 나오지 않았어요.뭐가 잘못됐나요?
나는 결국 내 문제를 스스로 해결하게 되었다.
8 SDK, iOS 8 SDK에 있다고 합니다.requestAlwaysAuthorization
로케이션의 경우) (「」)requestWhenInUseAuthorization
가 있는 ) ('포그라운드'의 경우):CLLocationManager
는 로케이션 업데이트를 시작하기 전에 필요합니다.
'있다'가 .NSLocationAlwaysUsageDescription
★★★★★★★★★★★★★★★★★」NSLocationWhenInUseUsageDescription
를 누르다Info.plist
프롬프트에 표시되는 메시지와 함께 표시됩니다.이것들을 더하면 내 문제가 해결된다.
자세한 내용은 Core-Location-Manager-Changes-in-ios-8을 참조하십시오.
저도 같은 문제로 머리를 뽑고 있었어요.Xcode는 다음 오류를 나타냅니다.
.
MapKit
로케이션 인증을 요구하지 않고 로케이션을 갱신합니다. 전화해야 합니다.-[CLLocationManager requestWhenInUseAuthorization]
★★★★★★★★★★★★★★★★★」-[CLLocationManager requestAlwaysAuthorization]
번째
그러나 위의 중 하더라도 에 info.plist에 info.plist의 한 가 표시되지 NSLocationAlwaysUsageDescription
★★★★★★★★★★★★★★★★★」NSLocationWhenInUseUsageDescription
.
다음 행을 info.plist에 추가합니다.여기서 문자열 값은 사용자 위치에 액세스해야 하는 이유를 나타냅니다.
<key>NSLocationWhenInUseUsageDescription</key>
<string>This application requires location services to work</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This application requires location services to work</string>
Xcode 5에서 이 프로젝트를 시작한 이후 이 엔트리가 누락된 것 같습니다.Xcode 6은 이러한 키에 대한 기본 엔트리를 추가할 수 있지만 확인되지 않았습니다.
이 두 가지 설정에 대한 자세한 내용은 여기를 참조하십시오.
iOS 7과의 하위 호환성을 확인하려면 사용자가 iOS 8 또는 iOS 7을 실행하고 있는지 확인해야 합니다. 예를 들어 다음과 같습니다.
#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
//In ViewDidLoad
if(IS_OS_8_OR_LATER) {
[self.locationManager requestAlwaysAuthorization];
}
[self.locationManager startUpdatingLocation];
- (void)startLocationManager
{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; //whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[locationManager requestWhenInUseAuthorization]; // Add This Line
}
info File 에도.플리스트
Apple 문서에 따르면:
- https://developer.apple.com/documentation/corelocation/requesting_permission_to_use_location_services
- https://developer.apple.com/documentation/corelocation/cllocationmanager/1620562-requestwheninuseauthorization
8의 ,NSLocationWhenInUseUsageDescription
★★★NSLocationAlwaysUsageDescription
Info.plist 。, 하기 전에, 에게, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」의 어느 쪽인가에 전화하는 .[self.myLocationManager requestWhenInUseAuthorization]
★★★★★★★★★★★★★★★★★」[self.myLocationManager requestAlwaysAuthorization]
당신의 필요에 따라.Info.plist 。
사용자가 허가를 해주면, 그것은 평상시와 같은 업무입니다.권한을 거부하면 대리인에게 위치 업데이트에 대한 알림이 전달되지 않습니다.
- (void)viewDidLoad
{
[super viewDidLoad];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){
NSUInteger code = [CLLocationManager authorizationStatus];
if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)] || [self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])) {
// choose one request according to your business.
if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){
[self.locationManager requestAlwaysAuthorization];
} else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) {
[self.locationManager requestWhenInUseAuthorization];
} else {
NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription");
}
}
}
[self.locationManager startUpdatingLocation];
}
> #pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError: %@", error);
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
}
iOS 8에서는 로케이션을 작동시키려면 다음 두 가지 작업을 추가로 수행해야 합니다.Info.plist에 키를 추가하고 Location Manager에게 시작을 요청하는 권한을 요청합니다.새로운 로케이션 인가에는 2개의 Info.plist 키가 있습니다.이러한 키 중 하나 또는 둘 다 필요합니다.키가 둘 다 없는 경우 startUpdatingLocation을 호출할 수 있지만 Location Manager가 실제로 시작되지 않습니다.또한 대리인에게 실패 메시지를 발송하지 않습니다(시작하지 않았기 때문에 실패할 수 없습니다).또한 키 중 하나 또는 둘 다 추가해도 명시적으로 인가를 요청하지 않아도 실패합니다.따라서 먼저 다음 키 중 하나 또는 모두를 Info.plist 파일에 추가해야 합니다.
- NSLocationWhen In Use Usage 설명
- NSLocationAlways Usage 설명
이 두 키 모두 문자열이 필요합니다.
로케이션 서비스가 필요한 이유를 설명합니다.iOS 7과 같이 "Location is required to find your where"와 같은 문자열을 입력할 수 있습니다.이 문자열은 InfoPlist.strings 파일에서 현지화할 수 있습니다.
Xcode 5로 컴파일할 수 있는 솔루션:
#ifdef __IPHONE_8_0
NSUInteger code = [CLLocationManager authorizationStatus];
if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)] || [self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])) {
// choose one request according to your business.
if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){
[self.locationManager requestAlwaysAuthorization];
} else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) {
[self.locationManager requestWhenInUseAuthorization];
} else {
NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription");
}
}
#endif
[self.locationManager startUpdatingLocation];
위치를 묻는 이전 코드는 iOS 8에서 작동하지 않습니다. 위치 인증에 대해 다음 방법을 사용할 수 있습니다.
- (void)requestAlwaysAuthorization
{
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
// If the status is denied or only granted for when in use, display an alert
if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status == kCLAuthorizationStatusDenied) {
NSString *title;
title = (status == kCLAuthorizationStatusDenied) ? @"Location services are off" : @"Background location is not enabled";
NSString *message = @"To use background location you must turn on 'Always' in the Location Services Settings";
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Settings", nil];
[alertView show];
}
// The user has not enabled any location services. Request background authorization.
else if (status == kCLAuthorizationStatusNotDetermined) {
[self.locationManager requestAlwaysAuthorization];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
// Send the user to the Settings for this app
NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:settingsURL];
}
}
iOS 8에서는 로케이션을 작동시키려면 다음 두 가지 작업을 추가로 수행해야 합니다.Info.plist에 키를 추가하고 Location Manager에게 시작을 요청하는 권한을 요청합니다.
info.plist:
<key>NSLocationUsageDescription</key>
<string>I need location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>I need location</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>I need location</string>
코드에 추가
if (IS_OS_8_OR_LATER)
{
[locationmanager requestWhenInUseAuthorization];
[locationmanager requestAlwaysAuthorization];
}
Swift 개발자의 일반적인 오류 중 하나는 다음과 같습니다.
''에 '하다'에 ''에 대한 값을 .NSLocationWhenInUseUsageDescription
★★★★★★★★★★★★★★★★★」NSLocationAlwaysUsageDescription
.
그래도 승인을 요청하는 창이 뜨지 않으면 줄을 그었는지 확인합니다.var locationManager = CLLocationManager()
의 View Controller »viewDidLoad
, 전화를 , 전화를 걸어도.locationManager.requestWhenInUseAuthorization()
이치노"viewDidLoad" "locationManager" "ViewDidLoad" "LocationManager" "ViewDidLoad" "LocationManager" "ViewDidLoad" "LocationManager" "ViewDid
입니다.var locationManager = CLLocationManager()
클래스 메서드의 최상위에 있습니다.
★★의 앞[locationManager startUpdatingLocation];
iOS8 로케이션서비스 요청은 다음과 같습니다.
if([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
[locationManager requestAlwaysAuthorization];
★★★를 Info.plist
" " 를 합니다.NSLocationAlwaysUsageDescription
값를 들어, 「」등)을 합니다.We do our best to preserve your battery life.
)
앱이 열려 있는 동안에만 위치 서비스가 필요한 경우 다음을 대체합니다.
requestAlwaysAuthorization
requestWhenInUseAuthorization
...
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
.
iOS8로 업그레이드된 앱을 작업하다가 위치정보가 작동하지 않게 되었습니다.[ Debug ]영역에서 다음과 같은 오류가 발생할 수 있습니다.
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
을 사용법 번째 추가는 " " " 입니다.NSLocationAlwaysUsageDescription
"Cisco.plist"는 다음과 같이 입력합니다.
이 키의 값을 입력하지 않았습니다.아직 동작하고 있고, 사내 앱이기 때문에 신경 쓰지 않습니다.또, 이미 로케이션 서비스를 이용하고 싶다고 하는 타이틀이 있기 때문에, 불필요한 것은 하고 싶지 않았습니다.
다음으로 iOS 8의 조건을 작성했습니다.
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager requestAlwaysAuthorization];
}
후에, 「 」를 참조해 주세요.locationManager:didChangeAuthorizationStatus:
'''콜:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus: (CLAuthorizationStatus)status
{
[self gotoCurrenLocation];
}
그리고 이제 모든 것이 잘 작동한다.항상 그렇듯이 설명서를 참조하십시오.
하위 호환성을 갖춘 솔루션:
SEL requestSelector = NSSelectorFromString(@"requestWhenInUseAuthorization");
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined &&
[self.locationManager respondsToSelector:requestSelector]) {
[self.locationManager performSelector:requestSelector withObject:NULL];
} else {
[self.locationManager startUpdatingLocation];
}
NSLocation 설정Info.plist의 WhenInUseUsageDescription 키
Xcode 경고를 생성하지 않는 하위 호환성 솔루션:
SEL requestSelector = NSSelectorFromString(@"requestWhenInUseAuthorization");
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined &&
[self.locationManager respondsToSelector:requestSelector]) {
((void (*)(id, SEL))[self.locationManager methodForSelector:requestSelector])(self.locationManager, requestSelector);
[self.locationManager startUpdatingLocation];
} else {
[self.locationManager startUpdatingLocation];
}
NSLocationWhenInUseUsageDescription
Info.plist
iOS 버전 11.0+의 경우: 셋업NSLocationAlwaysAndWhenInUseUsageDescription
Info.plist
의 키와 .. 2번으로 하다
이것은 ios 8의 문제입니다.이것을 코드에 추가합니다.
if (IS_OS_8_OR_LATER)
{
[locationmanager requestWhenInUseAuthorization];
[locationmanager requestAlwaysAuthorization];
}
및 info.plist:
<key>NSLocationUsageDescription</key>
<string>I need location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>I need location</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>I need location</string>
iOS 8에서 사용자 위치에 액세스하려면 다음을 추가해야 합니다.
NSLocationAlwaysUsageDescription in the Info.plist
사용자에게 현재 위치를 가져올 수 있는 권한을 요청합니다.
목표-C 절차 아래 지침을 따르십시오.
iOS-11의 경우 iOS 11의 경우 다음 답변을 참조하십시오. iOS 11 위치 액세스
두 개의 키를 목록에 추가하고 아래 그림과 같은 메시지를 제공해야 합니다.
1. NSLocationAlwaysAndWhenInUseUsageDescription
2. NSLocationWhenInUseUsageDescription
3. NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
if([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]){
[locationManager requestWhenInUseAuthorization];
}else{
[locationManager startUpdatingLocation];
}
위임 방식
#pragma mark - Lolcation Update
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError: %@", error);
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status) {
case kCLAuthorizationStatusNotDetermined:
case kCLAuthorizationStatusRestricted:
case kCLAuthorizationStatusDenied:
{
// do some error handling
}
break;
default:{
[locationManager startUpdatingLocation];
}
break;
}
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
CLLocation *location = [locations lastObject];
userLatitude = [NSString stringWithFormat:@"%f", location.coordinate.latitude] ;
userLongitude = [NSString stringWithFormat:@"%f",location.coordinate.longitude];
[locationManager stopUpdatingLocation];
}
신속한 절차
다음의 순서에 따릅니다.
iOS-11의 경우 iOS 11의 경우 다음 답변을 참조하십시오. iOS 11 위치 액세스
두 개의 키를 목록에 추가하고 아래 그림과 같은 메시지를 제공해야 합니다.
1. NSLocationAlwaysAndWhenInUseUsageDescription
2. NSLocationWhenInUseUsageDescription
3. NSLocationAlwaysUsageDescription
import CoreLocation
class ViewController: UIViewController ,CLLocationManagerDelegate {
var locationManager = CLLocationManager()
//MARK- Update Location
func updateMyLocation(){
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
if locationManager.respondsToSelector(#selector(CLLocationManager.requestWhenInUseAuthorization)){
locationManager.requestWhenInUseAuthorization()
}
else{
locationManager.startUpdatingLocation()
}
}
위임 방식
//MARK: Location Update
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
NSLog("Error to update location :%@",error)
}
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
switch status {
case .NotDetermined: break
case .Restricted: break
case .Denied:
NSLog("do some error handling")
break
default:
locationManager.startUpdatingLocation()
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last! as CLLocation
var latitude = location.coordinate.latitude
var longitude = location.coordinate.longitude
}
Xamarin을 사용하는 사용자의 경우, Xamarin 5.5.3 Build 6 또는 XCode 6.1의 드롭다운에서 사용할 수 없었기 때문에 수동으로 info.plist에 키를 추가해야 했습니다.NSLocationUsageDescription
그 에 「이러다」라고 하는 「이러다만, 그 에 「이러다」라고 하는 사태가 발생했습니다.CLLocationManager
을 사용하다
// ** Don't forget to add NSLocationWhenInUseUsageDescription in MyApp-Info.plist and give it a string
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
// Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[self.locationManager requestWhenInUseAuthorization];
}
[self.locationManager startUpdatingLocation];
// Location Manager Delegate Methods
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"%@", [locations lastObject]);
}
여러 Info.plist 파일을 가진 모든 사용자를 위한 작은 도우미...
find . -name Info.plist | xargs -I {} /usr/libexec/PlistBuddy -c 'Add NSLocationWhenInUseUsageDescription string' {}
필요한 태그를 현재 디렉토리(및 하위 폴더)의 모든 Info.plist 파일에 추가합니다.
또 다른 예는 다음과 같습니다.
find . -name Info.plist | xargs -I {} /usr/libexec/PlistBuddy -c 'Set NSLocationWhenInUseUsageDescription $YOURDESCRIPTION' {}
그러면 모든 파일에 설명이 추가됩니다.
이러한 업데이트를 위해 코코아 키 정보를 항상 사용할 수 있습니다. 다음 링크입니다.
즐거운 시간 되세요.
iOS9에서도 유사한 오류가 발생합니다(Xcode 7 및 Swift 2에서 작동).위치 인증을 요청하지 않고 MapKit 위치 업데이트를 시작하려고 합니다. CLLocationManager 요청을 호출해야 합니다.사용시인증] 또는 [CLLocation Manager 요청][ Always Authorization ]를 클릭합니다.튜토리얼을 팔로우하고 있었는데 튜터가 iOS8과 Swift 1.2를 사용하고 있었습니다.Xcode 7과 Swift 2에 몇 가지 변경이 있습니다.이 코드를 발견하면 문제없이 동작합니다(도움이 필요한 경우).
import UIKit
import MapKit
import CoreLocation
class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
// MARK: Properties
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
}
// MARK: - Location Delegate Methods
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))
self.mapView.setRegion(region, animated: true)
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("Errors: " + error.localizedDescription)
}
}
마지막으로 info.plist에 입력했습니다.정보 속성 목록: NSLocationInUseUsageDescription 값: 앱에 직원을 위한 위치 서버가 필요한 경우
iOS에서 사용자 위치에 액세스하기 위해.두 개의 키를 추가해야 합니다.
NSLocationWhen In Use Usage 설명
NSLocationAlways Usage 설명
Info.plist 파일로 변환합니다.
<key>NSLocationWhenInUseUsageDescription</key>
<string>Because I want to know where you are!</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Want to know where you are!</string>
아래 이미지를 참조하십시오.
추가 ★★
NSLocationWhenInUseUsageDescription
★★★★★★★★★★★★★★★★★」NSLocationAlwaysUsageDescription
사용)하는 문자열 (GPS 사용)info.plist
타の타다음을 실행하여 권한 요청:
[self init Location Manager: location Manager];
서 ★★★★★initLocationManager
말합니다
// asks for GPS authorization on iOS 8
-(void) initLocationManager:(CLLocationManager *) locationManager{
locationManager = [[CLLocationManager alloc]init];
if([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
[locationManager requestAlwaysAuthorization];
}
가 각 에 는, 해 주세요.info.plist
각 타겟에 대해 앱은 사용자에게 묻지 않습니다.if
7 및 7과의 호환성을 합니다.respondsToSelector:
7 및 method iOS 7의 하는 것만이 미래의 합니다.
저에게 있어서 문제는 그 수업이CLLocationManagerDelegate
이 때문에 모든 위임 메서드가 호출되지 않았습니다.흔한 상황은 아니지만 누군가를 도울 수 있을 때를 대비해서 언급해야겠다고 생각했어요.
는 그 는 in in in in in in in in in in in in에 추가한다.InfoPlist.strings
iOS 8.4에서는 iPad mini 2 입니다.그것도 효과가 있어요.키를 세팅하지 않아요NSLocationWhenInUseUsageDescription
, 「 」에서는, 「 」라고 Info.plist
.
InfoPlist.strings:
"NSLocationWhenInUseUsageDescription" = "I need GPS information....";
이 실타래에 의하면as in iOS 7
"InfoPlist.strings" 입니다. 테스트에서는,는, 할 수 .InfoPlist.strings
.
따라서 가장 먼저 해야 할 일은 다음 중 하나의 > 키를 Info.plist 파일에 추가하는 것입니다.
- NSLocationWhen In Use Usage 설명
- NSLocationAlways Usage 설명
이 두 키 모두 위치 서비스가 필요한 이유를 설명하는 문자열을 사용합니다.iOS 7과 같이 "Location is required to find your where"와 같은 문자열을 입력할 수 있습니다.이 문자열은 InfoPlist.strings 파일에서 현지화할 수 있습니다.
갱신:
의 방식이 더 좋다고 생각합니다.키 추가Info.plist
합니다.InfoPlist.strings
.
언급URL : https://stackoverflow.com/questions/24062509/location-services-not-working-in-ios-8
'source' 카테고리의 다른 글
SQL Server에서 동일한 예외를 다시 던지는 방법 (0) | 2023.04.24 |
---|---|
UITextField의 초기 키보드 애니메이션에서 매우 느린 지연/지연 (0) | 2023.04.24 |
시스템 변환그림그리기.아이콘에서 시스템으로Media.ImageSource (0) | 2023.04.24 |
ASP에서 웹 앱의 기본 URL을 얻으려면 어떻게 해야 합니까?NET MVC? (0) | 2023.04.24 |
리모트 서버에서 특정 브랜치를 꺼냅니다. (0) | 2023.04.24 |