ベル打ちキーボード、モールス信号キーボードというアプリを出しています。
iOSが提供しているキーボードとは別のオリジナルのキーボードを作るには、iOS8から導入されたExtensionを使用します。
カスタムキーボードの挙動を変更する、例えばキータップ時に音を鳴らすとか鳴らさないとかを切り替えさせるには、
- ホストのアプリ側に設定画面を作り込む
- その際、カスタムキーボード側のアプリに値を引き渡すために、App Groupsという機能を使用してUserDefaults経由で設定値を渡してあげる
必要があります。
ベル打ちキーボードの機能拡張にあたり、App Groupsの設定を行ったのですが、どうしてもホストのアプリ側で設定した値がカスタムキーボード側で読み込めない事象にどハマりしてしまったので、備忘のために記録しておきます。
ハマった箇所
App Groupsの設定を以下の通り行なってしまっていました。何がダメだかお分かりでしょうか。
デバッグ実行してもUserDefaultsの値が取得できませんでした。
原因
Capabilityの横、All , Debug , Release とありますが、
Releaseが光っているところでApp Groupsを設定してしまっていたことが原因でした。
そのため、App Groupsの機能はRelease実行なら有効にはなっていたのでしょうが、常にDebug実行していたためにApp Groupsが有効になっていなかったことが原因でした。
結果、Allを光らせている状態でApp Groupsの設定を再度行い、無事ホスト側の設定値を取り込むことができるようになりました。
これで1日ぐらい無駄にしました。