晚上事情太多了大概率沒辦法壓線發文只好早起寫文QQ
今天早上大約掃了一下幾篇介紹 screen time 的文章(by letvar (1) (2) (3) ),然後多發現一個新的 framework:ScreenTime。不過雖然名字這樣取,我們需要的依舊是 DeviceActivity,ScreenTime 是用來給家長們管理小孩手機的,不知道背後邏輯是怎麼運作的想想就挺有趣。
多發現的一件事是,想要成功使用 DeviceActivity 之前,大概率要先獲得授權。我的理解是要用 FamilyControls 底下的 selector 去選擇一包 app,然後把這些東西丟給 DeviceActivity 去監管。
struct ExampleView: View {
@State var selection = FamilyActivitySelection()
var body: some View {
VStack {
FamilyActivityPicker(selection: $selection)
}
.onChange(of: selection) { newSelection in
let applications = selection.applications
let categories = selection.categories
let webDomains = selection.webDomains
}
}
}
看這段 code 可能會有點陌生又有點熟悉,前幾天在研究某個 DeviceActivity 物件的時候,就是要把 applications, categories, webDomains 給丟進去。所以理想上應該可以從這裡選出一系列的東西(或直接全選),然後再進行後續動作吧。
最後再紀錄一下還沒來得及看的資源,像是 WWDC 2022 Screen Time API,Crunchy bagel 這篇也給了簡單的範例。以及 reddit 討論有提到好像需要向蘋果去 申請權限。
翻了文件也翻到一些討論,感覺這個 app 大概率無法達到我最初想要的樣子,因為從 framework 裡面抽出 raw data 好像是 not permitted,不過還是姑且再試一試能不能更靠近吧。