簡體   English   中英

使用WatchKit和Widget(今天擴展)保存/刪除到HealthKit?

[英]Save/Delete to HealthKit With WatchKit and Widget (Today Extension)?

由於我看到具有此功能的應用程序,因此我知道這是一個問題的答案。 我已經嘗試過(直接編寫,使用后台獲取),但是沒有任何效果。 我在應用商店中找到了當前具有所需功能的應用。 將“后台抓取”設置為“關閉”並且主應用程序不在后台運行。 我轉到小部件並添加一個項目。 我打開HealthKit,然后看到預期的數據。

我想為我的應用做同樣的事情。 我希望今天的擴展程序(窗口小部件)和/或WatchKit擴展程序即使在應用程序不在后台運行時也可以寫入HealthKit存儲。 就像我說過的,我測試了一個具有此功能的應用程序,即使在Apple文檔中卻說:

HealthKit存儲只能由授權的應用訪問。 您無法從擴展程序(例如Today視圖)或WatchKit應用程序訪問HealthKit。

由於HealthKit存儲是加密的,因此當手機鎖定時,您的應用無法從存儲中讀取數據。 這意味着您的應用在后台啟動時可能無法訪問商店。 但是,即使手機被鎖定,應用程序仍可以將數據寫入存儲。 手機解鎖后,該商店會臨時緩存數據並將其保存到加密的商店中。

任何答案或見解表示贊賞。 謝謝大家。

設備鎖定時,運行狀況數據存儲區確實已加密。 鎖定定義為需要設備上的密碼,並且屏幕已關閉(因此,必須先輸入密碼或觸摸ID才能返回主屏幕)。 盡管商店是加密的,但無論應用程序是否在后台運行,都無法從其中讀取任何數據。 即使在應用程序運行時設置觀察者查詢,也無法繼續讀取它。 我想可以通過使用帶有NSFileProtectionComplete選項的數據保護功能來完成這種級別的保護。

您在此其他應用程序中觀察到了哪些HealthKit功能? 如果正在顯示步距和距離數據,則他們很可能直接從計步器( CMPedometer )獲取此數據,該功能在設備鎖定時不受限制。

Lehn0058關於授權的評論是正確的。 即使已經在應用程序中提供了授權,我也必須從WatchKit和Today Extension中明確請求授權。 之后,兩者都可以寫入Health Store。 蘋果公司上面的評論僅與從健康商店中讀取有關,而與寫入健康商店中無關。 這是一些遇到相同問題的其他人的示例代碼。 再次感謝。

在WatchKit InterfaceController.m中

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    // Configure interface objects here.
    [[HealthKitManager sharedManager] requestHealthKitAccess];
}

在Today擴展TodayViewController.m中

- (void)viewDidLoad {
    [super viewDidLoad];    
    [[HealthKitManager sharedManager] requestHealthKitAccess];
}

暫無
暫無

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

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