2017-01-30 6 views
0

UITableViewController에 이상한 문제가 있습니다. viewDidLoad 메서드 내에서 위치 서비스 authroization을 요청하고 있는데 alertbox가 나타납니다. 그러나이 경고창은 몇 초 동안 표시된 다음 사라집니다. 왜 이런 일이 일어나는 걸까요?위치 서비스 요청 보관 방법 알림 상자가 계속 나타나다

override func viewDidLoad() { 
    let locationManager = CLLocationManager() 
    locationManager.requestAlwaysAuthorization() 
} 

이 코드를이 UITableViewController를로드하고 다른 문제가 발생한 UIViewController 내부에서 시도했습니다. 이번에는 푸시 알림 서비스 요청 알림 상자 만 표시되고 위치 서비스 요청은 완전히 무시됩니다. 나는 푸시 알림 서비스 요청이 나를 보낸 것이 아니라 이오스이기 때문에 내 위치 서비스 요청이 IOS 알림 요청에 의해 덮어 써 졌다고 생각합니다. 그것은 내 가정이 맞습니까? 아니면이 행동에 대한 어떤 탐구입니까?

답변

1

로컬 변수이므로 위치 관리자가 존재하지 않습니다. 그것을 지속적 속성을 확인하십시오

let locationManager = CLLocationManager() 
override func viewDidLoad() { 
    // ... 
} 

는 또한 나는 그것이 viewDidLoad에서이 작업을 수행하는 것이 좋습니다 여부를 모르겠어요. 뷰가 아직 인터페이스에 없습니다. 사실 이 없으며 인터페이스가 아직 없습니다.

하지만 코드에는 다른 많은 문제가 있습니다. 이미 승인이 있거나 승인이 이미 으로 거부되었을 수 있습니다.이 경우 입니다. 일반적으로 권한 부여 요청은 단순한 코드가 작성하는 것보다 훨씬 정교한 비즈니스입니다.

+0

좋은 지적! 요청하기 전에 승인 상태를 확인해야합니다. 그러나 그 코드는 어디에 속하는가? – user30646

+0

개인적으로 위치 서비스를 실제로 사용하기 전에 상태를 확인하고 싶습니다. 그러나 뷰 컨트롤러의 뷰가 처음 등장했을 때이를 수행하려면 분명히 'viewDidAppear'을 사용할 수 있습니다. – matt

+0

서비스를 사용하기 전에 허가를 요청했습니다. 그렇다면 내가 필요로하는 모든 서비스에 대한 사용 권한을 요청하고 그 사용을 중단해야한다고 생각했습니다. – user30646