iOS14のウィジットの設定ダイアログを出すためにCustom Intentを使う機会を得たのでその際に遭遇した大小様々なトラブルと対処方法についてのメモ。
Custom Intentでのボイラープレートコードを排除すべくintentdefinitionファイルに実現したいやりとりを記述させる。バイラープレートコードは排除できたが反面トラブルの多くはSiriKit Intent Deginition File(intentdefinitionファイルに)伴うものである。
1) コードジェネレーターの弊害
intentdefinitionファイルの情報に基づいてCustom Intent用の定義を生成しXcodeプロジェクト内のターゲットに追加してくれるがビルドしないと最新結果を反映しない。SwiftLintを使うプロジェクトではSwiftLintによるコードの整形とソースコード編集が競合(と警告メッセージが出てきてコーディング作業が寸断される)するような、開発者自身がプロジェクトを制御できていない状況になってしまう。
対処としてはintentdefinitionファイルを扱う際はコードジェネレーターが走ることを頭の片隅において作業を行う。具体的にはintentdefinitionファイル内の変更を行った際は一度ビルドを実行してコードジェネレートされたコードを逐一確認した方が良い。
2)検索不能
Custom Intentでは開発しているアプリ固有のIntent(意図)を作成することになる。Xcodeはintentdefinitionファイルから得られた情報からカスタムな定義を生成することになるが、カスタムな定義であるが故にWeb検索でCustom Intentに関係する情報を見つけにくい状況になってします。
対処方法は、Siriとかウィジットの設定ダイアログなどCustom Intentなど用途で検索するといくばくかの情報が出てくる。本ブログではCustom Intentについていくつか書いているので参考にしてほしい。
- ウィジットのウィジット設定を組み込む - ステップ解説付き(Custom Intent) - iOS Application | Irimasu Densan Planning - いります電算企画
- Custom Intent を理解するキーワードIntent、User Activity、Donate - Siri Intent Extension | Irimasu Densan Planning - いります電算企画
- アプリアップデートを申請中にITMS-90626が表示された際の対処メモ - Siri Intent Definition | Irimasu Densan Planning - いります電算企画
- [プレゼン資料]Siri をだしにしてみる(Siri Develop Guide 2018) | Irimasu Densan Planning - いります電算企画
3)Xcodeバージョン違い
intentdefinitionファイル はXcode経由で編集する前提となっているが複数のXcodeをmacOS上にインストールしているとintentdefinitionファイルの一部設定にアクセスできない場合が出てくる。
例としては、WidgetConfigurartion(ウィジット設定ダイアログ)用のintentdefinitionファイルをXcode12より前のXcodeでオープンするとWidgetConfigurartion用の設定が出てこないなどの問題が発生する。
まとめ
Custom Intent はSiriとSiri Shortカットへアプリ機能を提供するためにボイラープレートコードを回避するために用意された。
Custom IntentはSiri とは関係ないが、ユーザーの意図を伝達する手段として使われ始めておりiOS14でのWidget設定ダイアログを構築する際に利用された。開発者がCustom Intentにかかわる機会も増え、結果同じようなトラブルに遭遇する可能性はある。