Как перенаправить пользователя из виджета iOS в другое приложениеIOS

Программируем под IOS
Ответить
Anonymous
 Как перенаправить пользователя из виджета iOS в другое приложение

Сообщение Anonymous »

Я пытался выполнить некоторый код для открытия другого приложения на телефоне при нажатии кнопки на виджете для приложения, которое я создаю, но кажется, что выполнить его из расширения виджета невозможно.
Когда я пытаюсь создать приведенный ниже код (оба файла предназначены для расширения виджета), я вижу ошибку сборки: «'shared' недоступен в расширениях приложения для iOS: используйте представление». вместо этого используются решения на основе контроллера."
Когда я меняю цель AppIntent на основное приложение, оно собирается без каких-либо проблем. Имея это в виду и после некоторых поисков, некоторые другие подходы, которые я пробовал, но не смог реализовать:
  • нацелены как на расширение виджета, так и на приложение, но это все равно нарушает сборку.
  • переместите AppIntent в приложение и каким-то образом откройте доступ к вызову функции, хотя я не уверен на 100 %, как это сделать правильно.
Я не новый разработчик, но я довольно новичок в Swift, поэтому прошу прощения, если я упустил что-то очень очевидное, но я не смог чтобы найти хорошее решение для этого варианта использования. В конечном итоге я пытаюсь понять:
  • Можно ли/рекомендуется ли предоставлять 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»