No IOS 11, o DeviceMotion em segundo plano parou de funcionar
Meu aplicativo relata e registra dados de localização, altitude, rotação e acelerômetro (DeviceMotion) enquanto em segundo plano. Isso funciona bem no ios 10.3.3. No IOS 11, não tenho mais acesso a dados de movimento enquanto o dispositivo está bloqueado. Os dados de altitude e localização ainda estão sendo transmitidos para o console.
Alguma coisa mudou no IOS 11 que me impede de acessar dados de movimento ou estou tentando acessá-los de uma maneira que a Apple agora bloqueia como OperationQueue.main
Aqui está como estou iniciando as atualizações de movimento. Se o telefone estiver desbloqueado, tudo funcionará bem. Se eu bloquear o telefone, não haverá mais atualizações:
let motionManager = self.motionManager
if motionManager.isDeviceMotionAvailable {
motionUpdateInterval = 0.15
motionManager.deviceMotionUpdateInterval = motionUpdateInterval
motionManager.startDeviceMotionUpdates(using: .xArbitraryZVertical, to: OperationQueue.main) {deviceMotion, error in
guard let deviceMotion = deviceMotion else { return }
Não consigo encontrar nada sobre os modos de fundo do Motion mudando, mas parece que deve haver uma maneira, caso contrário, o RunKeeper, o Strava quebrará. Alguém pode me ajudar a fazer isso funcionar novamente antes do lançamento do IOS11?
Obrigado!