Когда я пытаюсь создать приведенный ниже код (оба файла предназначены для расширения виджета), я вижу ошибку сборки: «'shared' недоступен в расширениях приложения для iOS: используйте представление». вместо этого используются решения на основе контроллера."
Когда я меняю цель AppIntent на основное приложение, оно собирается без каких-либо проблем. Имея это в виду и после некоторых поисков, некоторые другие подходы, которые я пробовал, но не смог реализовать:
- нацелены как на расширение виджета, так и на приложение, но это все равно нарушает сборку.
- переместите AppIntent в приложение и каким-то образом откройте доступ к вызову функции, хотя я не уверен на 100 %, как это сделать правильно.
- Можно ли/рекомендуется ли предоставлять AppIntent или функцию из приложения расширению виджета, не нацеливаясь напрямую на оба? Например, могу ли я маршрутизировать нажатия кнопок виджета через приложение с помощью глубоких ссылок и условно направлять их на другие приложения на телефоне на уровне приложения?
- Есть ли здесь лучший подход, который я мог бы использовать? пропал?
// The AppIntent that responds to the button press
struct LaunchApp : AppIntent {
static var title: LocalizedStringResource = "Launch an App"
func perform() async throws -> some IntentResult & ProvidesDialog {
let phoneUrl = URL(string: "mobilephone://")!
if await UIApplication.shared.canOpenURL(phoneUrl){
await UIApplication.shared.open(phoneUrl)
}
return .result(dialog: "Opening app..")
}
}
// The widget that contains the button
struct launchwidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack{
Button(intent: LaunchApp()){
Text("Books")
.font(.system(size: 30, weight: .bold, design: .monospaced))
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... nother-app
Мобильная версия