Я создал действие следующим образом:
Код:
Файл виджета, содержащий виджет
Это находится внутри отдельной цели виджета.
Код: Выделить всё
import WidgetKit
import SwiftUI
import ActivityKit
struct TimerView : View {
let context: ActivityViewContext
var body: some View {
VStack {
Text(context.attributes.timerName)
.font(.headline)
Text(context.state.endTime, style: .timer)
}
.padding(.horizontal)
}
}
struct OfflineWidget: Widget {
let kind: String = "OfflineWidget"
var body: some WidgetConfiguration {
ActivityConfiguration(for: LiveActivityTimerAttributes.self) { context in
TimerView(context: context)
} dynamicIsland: { context in
DynamicIsland {
// Expanded
DynamicIslandExpandedRegion(.bottom) {
Text("Dynamic island isn't supported yet")
}
} compactLeading: {
Text("Dynamic island isn't supported yet")
} compactTrailing: {
Text("Dynamic island isn't supported yet")
} minimal: {
Text("Dynamic island isn't supported yet")
}
}
}
}
Код: Выделить всё
@State private var activity: Activity?
Код: Выделить всё
Button("Start live activity") {
// Create attributes
let attributes = LiveActivityTimerAttributes(timerName: "Dummy timer")
// Create initial state
let state = LiveActivityTimerAttributes.ContentState(endTime: Date().addingTimeInterval(60))
let content = ActivityContent(state: state, staleDate: nil)
// Request to start activity
do {
activity = try Activity.request(
attributes: attributes,
content: content,
pushType: nil // NEED to pass nil here. Defaut is to allow push notifications to update the live activity
)
} catch {
print("Error requesting live activity: \(error)")
}
}
Button("Stop live activity") {
// Update activity state
let state = LiveActivityTimerAttributes.ContentState(endTime: .now)
// Request activity to end
let content = ActivityContent(state: state, staleDate: nil)
Task {
await activity?.end(content, dismissalPolicy: .immediate)
}
}
Однако, когда я запускаю приложение в симуляторе iOS 18.1 > Я понимаю
Код: Выделить всё
ActivityKit.ActivityAuthorizationError.unsupportedTarget
Согласно документации Apple, ошибка unsupportedTarget возникает, когда...
приложение не имеет необходимых прав для запуска интерактивных действий.
< h3>Вопрос:
Что О правах здесь идет речь?
a. Речь идет о специальной цели Live Activity, но в моем Xcode я не вижу ничего подобного:

b. Это потому, что я пользуюсь бесплатной учетной записью разработчика Apple? В таком случае, почему это должно меня ограничивать, поскольку я обязательно устанавливаю pushType: nil, когда запрашиваю живое действие.
Я был бы очень признателен за небольшую помощь , спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... tube-tutor