Как я могу узнать, что мое приложение работает в фоновом режиме?
Я написал эту программу, она работает, когда приложение отображается на экране
Если приложение в фоновом режиме, оно перестает печатать широту, когда я возобновляю приложение, оно начинает печатать снова.
Я включил фоновые режимы в xcode, а также проверил Location updates
почему мое приложение до сих пор не работает в фоновом режиме?
Если приложение работает, просто print
функция не работает в фоновом режиме, как я могу узнать, что приложение работает?
class ViewController: UIViewController,
CLLocationManagerDelegate {
var locationManager: CLLocationManager = CLLocationManager()
var startLocation: CLLocation!
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation])
{
let latestLocation: CLLocation = locations[locations.count - 1]
print(latestLocation.coordinate.latitude)
}
override func viewDidLoad() {
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
startLocation = nil
}
}
2 ответа
Если ваше приложение использует местоположение в фоновом режиме). Вы должны установить allowsBackgroundLocationUpdates
ДА в дополнение к настройке возможности фонового режима в Info.plist
, В противном случае обновления местоположения доставляются только на переднем плане.
если CLLocationManager сначала вызывается startUpdatingLocation
метод, и в файле projectname-Info.plist добавляется Обязательный Background Modes
-> Приложение регистрирует обновления местоположения.
Во-первых, ваша проблема:
locationManager.requestWhenInUseAuthorization()
Это просит вашего менеджера местоположения обновить свое местоположение, только когда ваше приложение находится на переднем плане. Вы должны изменить это на:
locationManager.requestAlwaysAuthorization()
Если это все еще не работает, убедитесь, что ваш менеджер местоположения запускает обновления, добавив оператор печати в функции делегата.
Во-вторых, как напечатать материал в фоновом режиме:
Мой любимый способ - регистрировать вещи в UserDefaults, потому что они сохраняются при перезапуске приложения. Я установлю свои операторы печати в качестве значения для log
ключ к примеру. После перезагрузки я прочитаю содержимое UserDefaults из log
ключ.