🤖
WidgetKit実装時のメモ(Core Data, macOS対応)
Core Dataとの同期
-
App Groupsを各Targetでcheckする。
XcodeのTargets > Signing & Capabilities
からApp Groups
追加する。 -
setQueryGenerationFrom
を忘れずに実行する。
*これをしないとアプリ側で保存してもすぐに反映されないので注意。
try viewContext.setQueryGenerationFrom(.current)
https://developer.apple.com/forums/thread/668144
macOS対応
Widgetsの編集(Intentsでダイナミックに設定)
IntentsのTargetにApp Sandboxを追加する。
XcodeのTargets > Signing & Capabilities
からApp Sandbox
追加する。
*これをしないと右クリックした時の編集ができないので注意
https://stackoverflow.com/q/64598227/14970235
Widgetの更新
scenePhaseを使って更新しようとしたけど、現状macOSではうまく動かない。(Xcode13.2.1)iOSはこの方法で動く。
https://developer.apple.com/documentation/swiftui/scenephase
なのでNSApplicationDelegateAdaptorを使って、applicationWillResignActive
の中で更新するとできる。
https://developer.apple.com/documentation/swiftui/nsapplicationdelegateadaptor
(ちなみにonReceiveでNOtificationを受け取る方法も無理だった)
// これでは無理だった。
Text("").onReceive(NotificationCenter.default.publisher(for: NSWorkspace.sessionDidResignActiveNotification)) { _ in }
Discussion