とiOS版で長時間バックグラウンドタスクを実行する:ユーザーが長時間(約15分)CLBeaconRegion
にまだ残っている場合私は次の操作を実行したいiBeacons
、私はなりたいですいくつかのコードを実行することができます。アプリがフォアグラウンドにある場合、この問題は簡単ですが、割り当てられた時間までバックグラウンドの時間を延長するのに問題があります。私は位置情報サービスを利用しているので、このような長いバックグラウンドタスクを実行することは許されるべきです。
didEnterRegion
とdidExitRegion
の両方が、ユーザーの移動時にのみバックグラウンドで呼び出されます。時間に関するバックグラウンドタスクを実行できる場所固有のAPIはありません。
同じことを達成したいと思う他の類似の質問、例えばhereのすべてのスレッドが表示されます。しかし、別の方法を
(基本的に無効とbackgroundTimeRemaining
が十分に小さいですが、このソリューションで私の最初の試みはうまくいかなかったときCLLocationManager
を有効にする必要がある)提案されたソリューションは、CLBeaconManager
のために働くだろうとは思えません限られた範囲でこれを行うことができます.15分以内に通知をスケジュールし、didExitRegion
で通知をキャンセルします。
ただし、上記の解決策は、ハックまたは不十分であると感じます。私が欲しいものを達成するための「エレガントな」方法はありますか?
Info.plistでロケーションバックグラウンドモードが有効になっています。 'didEnterRegion'の' backgroundTimeRemaining'をチェックすると、それは無限であると言います。しかし、後で 'backgroundTimeRemaining'をチェックすると、それはまだ180秒からカウントダウンしていることがわかります。興味深い。 –
その違いが私が範囲を広げていたのではないかと思いますか?それがうまくいくならば、15分のレンジングを行うことができ、15分が終わったら停止することができます。 – davidgyoung
残念ながら私は結果を再現することができませんでした。 (私は15分間に合うと思っていません)Rangingは無限の「backgroundTimeRemaining」を約5秒間与えてから再びカウントダウンを開始しました。ロケーションバックグラウンドモードを有効にするだけで無限のバックグラウンド時間が得られると言っていますか?それは背景モードに関する多くの文献に反するようです。 –