私はSwiftを使って離陸と着陸を追跡するiPhoneアプリケーションを作成しています(空気圧の変化によって示されます)。バックグラウンドでiPhoneの高度を測定する
このためには、バックグラウンドでiPhoneの気圧を測定する必要があります。私は1時間または2分間少なくとも毎分1回の間隔で圧力を測定する必要があります。私はApple Developer Background Execution guideを読んでいますが、背景モードのどれも関連しているとは思わない。たとえば、有限長のタスクが長く続くことはなく、フェッチタスクがあまりにも少ないようです。次のように空気圧を取得するために
私の現在のコードは次のとおりです。
let opQueue = OperationQueue.current!
opQueue.qualityOfService = .background
altimeter.startRelativeAltitudeUpdates(to: opQueue) { (data, error) in
print ("Pressure returned")
//If pressure returned from iPhone correctly:
if let data = data {
self.localPressure = convertPressure(data.pressure.doubleValue, fromUnit: .kPa, toUnit: .hPa) //In hPa
}
}
が、私はこののQoS
operationQueue
.background
に変更されましたが、私はそれを理解するように、これは単に&を更新取得するには、この優先順位が低くなりますバックグラウンドでの実行(正しい?)とは何の関係もありません。
バックグラウンド実行時に気圧を定期的に取得できる他の方法はありますか?私は気圧を毎分あるいはそれ以上にすることは大量の電力を使うことを想像できませんので、可能であることを願っています。
ご迷惑をおかけして申し訳ございません。
おかげで、
CLLocationは、圧力センサからではなく、GPSから高度を取得します。しかし、着陸している飛行機に1分間に1回だけデータが必要な場合、GPSはとにかく十分です。圧力センサーの感度を上げる必要はありません。 – fishinear
これは良いことですが、私は 'CLLocation'も' CMAltimeter'からデータを取得します。しかしAFAIKには悲しいことに、バックグラウンドから 'CMAltimeter'にアクセスしてアップデートを受け取るAPIがないので、より正確な精度が必要な場合でもロケーションアップデートを使用する唯一の方法です。 –