🐡
Xcode15(iOS17)の構成可能なWidgetsの対応
WidgetのXcode15対応でいろいろハマったので、要点だけメモしておきます。
構成可能でインタラクティブなWidgetsの対応したときの問題。
-
iOS16だと、WidgetBundle内で
if # availableとかすると実行時クラッシュしてそもそもWidgetが追加できない。
https://stackoverflow.com/q/76864560/14970235 -
iOS17で、CustomIntentMigratedAppIntentを使う方法でやると、Widgetの表示が乱れる。一度INIntentの方法でビルドすると表示されるようになるけど、また戻すと、編集する際の項目が表示されない(一瞬ProgressViewがでてすぐ消える)Emoji Rangerでも同じ症状っぽい。
*Xcode 15 RC
解決方法
- WidgetBundle内で
if # availableを使わないように変更。 - CustomIntentMigratedAppIntentを使わないように変更。
その他にポイントは、インタラクティブな動作のためのAppIntentは、アプリ側のTarget Menbership(Xcode右側のチェックのやつ)にもチェックが必要だったり、Emoji Rangerのコードを参考に、AppIntentConfigurationとIntentConfigurationを出し分けしたり。
追記
編集する際の項目が表示されない(一瞬ProgressViewがでてすぐ消える)バグが再度発生した。Localizable.xcstringの新しいStringsファイルをメインのアプリのTarget Membership(Xcodeの右側のチェックボックス)にチェックが入ってたのが原因だった。
参考リンク
Discussion