Keyboard extensionを使用したカスタムキーボードを製作する際、触覚フィードバック(ボタンを押すとちょっとiPhoneが振動するやつ)を実装すべく、
let feedbackGenerator = UISelectionFeedbackGenerator() feedbackGenerator.selectionChanged()
を実装しても、これだけでは動作しません!以下のエラーが発生します。
2022-11-04 17:18:39.938802+0900 JPKB7[25150:2411700] [hapi] CHHapticEngine.mm:455 -[CHHapticEngine setupUnsharedAudioSessionAndReturnError:]: Failed to set category on audio session 2022-11-04 17:18:39.939793+0900 JPKB7[25150:2411700] [Feedback] failed initializing core haptics engine for <_UIFeedbackCoreHapticsHapticsOnlyEngine: 0x2832f40e0>: Error Domain=NSOSStatusErrorDomain Code=1836282486 "(null)"
解決方法
キーボードのフルアクセスを許可をONにする必要があります。
カスタムキーボードのInfo.plistの設定
<key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> : : <key>RequestsOpenAccess</key> <true/> </dict>
RequestsOpenAccessの値をtrueにします。
端末側の設定
[設定]アプリの[一般]→[キーボード]→[キーボード]→(該当のカスタムキーボード)→[フルアクセスを許可]をONします。
この際仰々しいダイアログで許可を求めてきますが、致し方ありません。