Не получить местоположение пользователя после завершения работы приложения.он работает на Fitbit iOS App - PullRequest
0 голосов
/ 26 июня 2019

В настоящее время я работаю над приложением и столкнулся с проблемой. Цель моего приложения - видеть, когда кто-то отправляется в определенное место. Приложение отлично работает, когда находится на переднем плане и на заднем плане, но как только пользователь принудительно прервал приложение, оно не сможет получить доступ к его местоположению. Насколько я понимаю, вы должны использовать для этого функцию существенного изменения местоположения. Тем не менее, он не работает, как ожидалось.

Но это работает на Fitbit App и не знаю других, если приложение работает это или нет, кто-то, пожалуйста, помогите этому, Пожалуйста, проверьте эту ссылку https://apps.apple.com/us/app/fitbit-activity-calorie-tracker/id462638897?ign-mpt=uo%3D4

Также, пожалуйста, проверьте мой текущий код, когда приложение закрыто / приостановлено. Я пробую этот код.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    if launchOptions?[UIApplication.LaunchOptionsKey.location] != nil {
            //You have a location when app is in killed/ not running state
            locationManager.requestAlwaysAuthorization()
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.allowsBackgroundLocationUpdates = true
            locationManager.startMonitoringSignificantLocationChanges()
        }
}

func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

        locationManager.stopUpdatingLocation()
        locationManager.startMonitoringSignificantLocationChanges()
        locationManager.delegate = self
    }

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let newLocation = locations.last else {
            return
        }

        guard let oldLocation = oldLocation else {
            // Save old location
            self.oldLocation = newLocation
            return
        }

        let oldCoordinates = oldLocation.coordinate
        let newCoordinates = newLocation.coordinate

        // Save old location
        self.oldLocation = newLocation

        currentLocation = newLocation
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("Error \(error)")
        if let error = error as? CLError, error.code == .denied {
            // Location updates are not authorized.
            manager.stopMonitoringSignificantLocationChanges()
            return
        }  
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...