はじめに
現在、Widgetのアプリを開発しています。
Widgetにボタンを配置してタップアクションを実装しようと思ったのですが、うまく動きませんでした。
どうやら、Widgetではボタンは機能しないみたいです。
別の方法がないか調べたところ、それらしき方法を見つけたので記録しておきます。
URLSchemeを設定する
こちらは割愛します
以下の記事がわかりやすかったです。
今回は、sample
と設定したことにします。
実装
メイン
SampleApp
import SwiftUI
@main
struct SampleApp: App {
var body: some Scene {
WindowGroup {
ContentView().onOpenURL { url in
// ここで処理を実行する
}
}
}
}
ウィジェット
SampleEntryView
struct ZennWidgetExtensionEntryView : View {
var entry: Provider.Entry
var body: some View {
Link(destination: URL(string: "sample://")!) {
Text("ボタン")
}
}
}
おわり
URLSchemeでアプリを開いた時だけ、特定の動作を実現すれば良いみたいです。
sample://test/scheme?q=food
こんな感じでURLにパスやパラメータを追加することもできます。
アプリ側でパスやパラメータに応じて処理を変更することができます。
URLの部分抽出は以下の記事が参考になると思います。
参考記事