2016-04-09 5 views
0

HealthKitが有効なiOSアプリケーションに非アクティブアラートをプログラミングしています。ユーザーがHealthのデータに基づいて最後の60分間に100ステップ未満を取得した場合、通知を送信します。これは、アプリケーションが開いているときに完全に動作しますが、バックグラウンドで動作させるのに問題があります。私はこのチュートリアル(https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial)で説明されているバックグラウンドロケーションチェックプログラムと一緒にステップデータを取得しようとしましたが、実際のiPhoneでチュートリアルのプログラムを実行すると何らかの理由でバックグラウンドで位置データが収集されなくなります。バックグラウンドで定期的にヘルスキットデータをチェックする

私の質問は:アプリは何日も閉じていても、バックグラウンドで毎分健康データを確実に確認できますか?

+0

これまでに試したことが分かるように、HealthKitとやりとりする関連するコードスニペットを含めてください。 – Allan

+1

私は基本的に、バックグラウンドでユーザーの場所を追跡することによって、この1つを解決しました。他の人がここで回答を探している場合は、そのチュートリアルを使用するだけでなく、ここにあるあなたのプロジェクトにコードスニペットを追加することを理解してください:http://stackoverflow.com/a/32939887/5700898 – owlswipe

答えて

2

HealthKitデータベースは、デバイスがロックされると暗号化されます。これは、デバイスがあなたのパスコード/指紋(デバイスの大半が有効になっている)を入力する必要があるときに、そこからデータを読み取ることができないことを意味します。残念ながら、1分ごとに何かをバックグラウンドで実行することができても、データを読み取ることはできません(クエリは結果の代わりにエラーを返します)。

しかし、歩数計からステップデータにアクセスすることはできます(このデータは暗号化されていません)。 HealthKitの代わりにバックグラウンド処理を使用することをお勧めします。

実際には、ユーザーが過去1時間にステップを実行したかどうかを確認する必要があるように聞こえます。毎分ではなく頻繁にチェックするほうがずっと効率的です。アプリがプッシュ通知設定のサーバーにアクセスできる場合、静音プッシュ通知をスケジュールしてアプリをバックグラウンドで起きさせ、歩数計からステップチェックを1時間に1回行うことができます。

+0

ありがとう、あなたは非常に良い点。なぜ私はそれが画面がロックされてクラッシュしていたのだろうか... – owlswipe

関連する問題