我正在开发一个项目,我想获得其他应用程序的使用时间。苹果推出了iOS 12并提供了新功能
Screen Time
。我想知道Apple有没有提供任何方法或API可以从中获取数据。
不可以,在 iOS 上,每个应用程序都在自己的沙箱中运行,无法看到其他应用程序的数据,甚至是来自同一发布者的应用程序。应用程序可以访问特殊的共享数据,例如相册中的照片或联系人数据,但应用程序无法直接访问其他应用程序编写的文件。
ScreenTime 应用程序与您的应用程序位于另一个沙箱上。除非苹果提供API,否则我们无法访问它。
自从苹果在ios12模拟器中添加了屏幕时间应用程序。他们可能很快就会提供 API。
在 iOS 15 上苹果添加了一个 API,请参见这里: https://developer.apple.com/documentation/FamilyControls
家庭控制
授权您的应用程序提供家长控制 孩子的设备。要授权您的家长控制应用程序,请使用共享 授权中心实例。您只能授权家长控制 在属于家庭共享组并登录到的设备上 孩子的 iCloud 帐户。
您必须将家庭控制功能添加到您的应用程序中。
这似乎只为家长控制应用程序提供功能。换句话说,目前其他时间跟踪或生产力应用程序无法使用它。
是的,可以使用 Screen Time API 获取屏幕时间数据,该 API 包含三个框架:
通过这三个框架,您可以检索屏幕时间信息。
要将其集成到 Xcode iOS 项目中,请转到文件 -> 新建 -> 目标 -> 设备活动报告扩展。这会将设备活动报告扩展目标添加到您的项目中,并自动创建三个文件:
要显示用户的总屏幕时间,请将以下代码添加到任何视图文件中。这将提示用户获得许可,并在批准后显示他们的屏幕时间。
struct ExampleView: View {
@State private var context: DeviceActivityReport.Context = .init(rawValue: "Total Activity")
@State private var filter = DeviceActivityFilter(
segment: .daily(
during: Calendar.current.dateInterval(
of: .day, for: .now
)!
),
users: .all,
devices: .init([.iPhone, .iPad])
)
var body: some View {
DeviceActivityReport(context, filter: filter)
}
}
此代码将调用 TotalActivityView.swift 文件。
万岁!将显示屏幕时间。