LoginSignup
2
1

More than 1 year has passed since last update.

【SwiftUI】Widgetからタップでアクションを実行する

Posted at

はじめに

現在、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の部分抽出は以下の記事が参考になると思います。

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1