2016-04-09 29 views
0

我正在爲啓用了HealthKit的iOS應用程序編寫一個不活動警報。當用戶在最近60分鐘內採取的步數少於100步時,根據Health中的數據,它會發送通知。當應用程序處於打開狀態時,此功能完美無缺,但在後臺工作時遇到了一些麻煩。我已經嘗試了在本教程中描述的背景位置檢查程序(https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial)中獲取步驟數據,但由於某些原因,當教程程序在真實iPhone上運行時,位置數據停止在後臺收集。在後臺swift中定期檢查healthkit數據

因此,我的問題是:即使應用程序已關閉幾天,我的應用程序如何在後臺每分鐘可靠地檢查運行狀況數據?

+0

請包含與HealthKit交互的相關代碼片段,以便我們可以看到迄今爲止您嘗試過的內容。 – Allan

+1

我基本上已經解決了這個問題,通過在後臺跟蹤用戶的位置。如果有人在這裏找到答案,請知道你應該使用該教程,但也可以將代碼片段添加到在此處找到的項目中:http://stackoverflow.com/a/32939887/5700898 – owlswipe

回答

2

HealthKit數據庫在設備鎖定時被加密。這意味着當設備要求您輸入密碼/指紋(大多數設備已啓用)時,您無法從中讀取任何數據。因此,不幸的是,即使你每分鐘都能在後臺運行一些東西,你也無法讀取數據(你的查詢只會返回一個錯誤,而不是任何結果)。

但是,步數據仍然可以從計步器訪問(此數據未加密)。我建議你看看使用它來代替HealthKit進行任何後臺處理。

現在聽起來好像你真的只需要檢查用戶是否在過去一小時內採取了措施。如果你只是經常檢查而不是每分鐘一次,那麼效率會更高。如果您的應用可以訪問帶有推送通知設置的服務器,則可以安排無聲推送通知以在後臺喚醒您的應用,並且每小時執行一次計步器的步驟檢查。

+0

謝謝,你讓非常好的一點。我想知道爲什麼它與鎖定的屏幕崩潰... – owlswipe