【发布时间】:2023-02-14 08:01:41
【问题描述】:
我正在使用 iOS 16 beta 3 并尝试获取所有应用程序的每日屏幕持续时间。我正在使用下面的代码获取持续时间和 bundleIdentifier,但 localizedDisplayName 始终返回 nil。有没有人面临同样的问题?这是一个测试版问题吗?还是我做错了什么?
struct TotalActivityReport: DeviceActivityReportScene {
// Define which context your scene will represent.
let context: DeviceActivityReport.Context = .totalActivity
// Define the custom configuration and the resulting view for this report.
let content: (ActivityReport) -> TotalActivityView
func makeConfiguration(representing data: DeviceActivityResults<DeviceActivityData>) async -> ActivityReport {
// Reformat the data into a configuration that can be used to create
// the report's view.
var list: [AppDeviceActivity] = []
let totalActivityDuration = await data.flatMap { $0.activitySegments }.reduce(0, {
$0 + $1.totalActivityDuration
})
for await d in data {
for await a in d.activitySegments{
for await c in a.categories {
for await ap in c.applications {
let appName = (ap.application.localizedDisplayName ?? "nil")
let bundle = (ap.application.bundleIdentifier ?? "nil")
let duration = (ap.totalActivityDuration)
let app = AppDeviceActivity(id: bundle, displayName: appName, duration: duration)
list.append(app)
}
}
}
}
return ActivityReport(totalDuration: totalActivityDuration, apps: list)
}}
【问题讨论】:
-
你有没有找到与此相关的东西?
-
是的,在 iOS 16 发布之前,Apple 解决了这个问题。
-
你能和我分享你的演示项目或 git 存储库吗..我在实现这个时遇到了麻烦?
-
好的,我会为此创建一个教程,并在发布时通知您。
-
好的,谢谢,苦苦等待!