簡體   English   中英

Healthkit:設置“enableBackgroundDelivery”,但當某些設備上的用戶有新的健康數據時,iOS 根本不會喚醒應用程序

[英]Healthkit: Set up 'enableBackgroundDelivery' but iOS is not at all waking up the app when there is new health data for the user on some devices

我正在我的應用程序上使用 HealthKit SDK(它與健康有關)。 我設置了“enableBackgroundDelivery”,希望 iOS 在有新的用戶健康數據時喚醒我的應用程序,以便我可以開始查詢用戶的健康數據。 當有新的健康數據並且代碼在我的設備和用戶的設備上按預期工作時,iOS 會喚醒應用程序,但在某些設備上,iOS 根本不會喚醒應用程序。

如果我的代碼有問題,那么它不應該適用於任何設備,但它適用於我的設備和用戶的設備,所以我認為我的代碼出現問題的可能性很小。 當我搜索該問題的其他可能性時,我發現以下原因導致 iOS 在某些設備上有用戶的新健康數據時不會喚醒應用程序。

  1. 健身追蹤和健康在設置 -> 隱私 -> 運動和健身下關閉。 並且運動校准和距離在設置 -> 隱私 -> 位置服務 -> 系統服務下關閉。 在這種情況下,默認的健康應用程序本身無法獲取健康數據,因此它不會喚醒我的應用程序。

  2. 我的應用程序的后台應用程序刷新已關閉。 在這種情況下,當應用程序被最小化或強制關閉時,HealthKit 不會喚醒我的應用程序,因為用戶設置就是這樣。

  3. iOS 故意不頻繁喚醒我的應用程序或任何應用程序,原因有很多,例如節省用戶設備的電池電量,或者如果用戶正在積極使用如此多的應用程序,那么 iOS 會優先考慮這些應用程序,並且 iOS 會將我們應用程序的服務安排到未來. iOS 內部算法會考慮設備的性能和優化,並將服務分配給設備上安裝的應用程序,這意味着我們的代碼只有在 iOS 決定執行時才會執行。 這可能是為什么我看不到某些用戶的健康數據的原因,但持續了多長時間? iOS 應該至少在一兩天后喚醒我的應用程序,但它沒有。


對於我看到問題的用戶,上述#1 和#2 設置已正確設置。 如果#3是原因,iOS應該至少在一兩天后喚醒我的應用程序,但它並沒有喚醒應用程序,我已經與一些用戶進行了溝通,他們在iOS默認的“健康”應用程序中有一些數據.


有沒有人遇到過這種問題? 除了上述原因(代碼方面和 iOS 設置方面),還有人知道為什么 iOS 沒有喚醒我的應用程序的任何其他原因嗎?

我的代碼與此類似: https ://gist.github.com/phatblat/654ab2b3a135edf905f4a854fdb2d7c8

謝謝。

我環顧四周,因為我沒有從后台獲得任何更新,即使我使用了 Apple 的標准實現並且我在 Capabilities 中啟用了 HealthKit 后台交付。

事實證明 - 必須在“設置”中啟用背景刷新。 在 HealthKit 權限對話框的最底部寫着:“要允許后台更新啟用 Settings->General->Background Refresh ”。

甚至我的應用程序都沒有在此處列出,但這確實有效。 我默認禁用它,所以也許這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM