Logger.location.debug("Exited a saved location")
Task(priority: .high) { @MainActor in
if ActivityManager.shared.activityState == .ended {
do {
try await StartActivity_AppIntent().perform()
} catch {
Logger.location.debug("Error starting activity: \(error.localizedDescription)")
}
}
}
}
< /code>
Вот намерение < /p>
struct StartActivity_AppIntent: LiveActivityIntent {
static var title: LocalizedStringResource = .init("app_intents.start_activity.title", defaultValue: "Start Activity")
static var description: IntentDescription? = IntentDescription(LocalizedStringResource("app_intents.start_activity.description", defaultValue: "Starts tracking a new activity."))
init() {}
@MainActor
func perform() async throws -> some IntentResult & ProvidesDialog {
Logger.appIntents.info("Start Activity App Intent Called")
let activity = try await ActivityManager.shared.startActivity()
// This is the only thing that does not work
LiveActivityManager.shared.start(startTime: activity.startTime)
let modelContainer = try ModelContainer(for: DataStore.schema, configurations: DataStore.modelContainerConfiguration)
let modelContext = ModelContext(modelContainer)
NotificationManager.handleStartActivityNotifications(modelContext: modelContext)
return .result(dialog: IntentDialog(.init("app_intents.start_activity.result.dialog", defaultValue: "Succesfully started an activity at \(activity.startTime.formatted(date: .complete, time: .shortened))!")))
}
}
< /code>
Вот моя ливеактивность manager < /p>
class LiveActivityManager {
static let shared = LiveActivityManager()
private var activity: Activity?
private init() { }
func start(startTime: Date) {
Logger.liveActivities.debug("Starting a live activity")
guard ActivityAuthorizationInfo().areActivitiesEnabled else {
return
}
let attributes = MyActivityAttributes(startTime: startTime)
do {
let activity = try Activity.request(
attributes: attributes,
content: .init(state: .init(), staleDate: nil),
pushType: nil
)
self.activity = activity
} catch {
Logger.liveActivities.error("Error starting live activity: \(error.localizedDescription)")
}
}
func end() {
// guard let activity else {
// Logger.liveActivities.error("No live activity active")
// return
// }
Task {
for activity in Activity.activities {
await activity.end(
ActivityContent(state: .init(), staleDate: nil),
dismissalPolicy: .immediate
)
}
self.activity = nil
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... erdelegate
Мобильная версия