数日前に、再インストール後にアプリが[設定]>[位置情報サービス]に表示されないことについてこの質問をしました。再インストール後、アプリを実行し、[現在の場所を使用]認証アラートビューが表示されて、アプリが位置情報サービスリストの下に表示されるのを待つ必要があることがわかりました。次に、アプリの起動時にこのアラートビューがアプリにすぐに表示されないことがわかりました。
問題になる可能性のあるコードを次に示します。
-(void)restartGps: (UIWebvView *)curWebView {
[locationManager startMonitoringSignificantLocationChanges];
[self performSelector:@selector(noGpsLock:) withObject:curWebView afterDelay:GPS_TIMEOUT];
}
-(void)noGpsLock: (UIWebView *)curWebView {
if (!hasLocationFix) {
[locationManager stopMonitoringSignificantLocationChanges];
[self performSelector:@selector(restartGps:) withObject:curWebView afterDelay:GPS_TIMEOUT];
}
}
hasLocationFixは、-locationManager:didUpdateToLocation:fromLocation:
が呼び出されたときにTRUEに設定されます。
最初に呼び出しrestartGps:
て、viewDidLoad
それ以降、2つのメソッドを相互に呼び出します。初めてrestartGps:
呼び出されたとき(からviewDidLoad
)、アラートが表示されなかったため、アプリは場所を取得できませんでした。noGpsLock:
との呼び出しの後restartGps
、アラートが最終的に表示され、アプリは場所を取得することができました。
アラートが最初に表示されないのはなぜrestartGps:
ですか?