カスタムキーボードを作っていく中で、いろいろ問題点がわかってまいりました。
そのうちの1つが「キーボードが起動しないことがある」という問題。
解決策がわかったのでご紹介します。
(キーボードを切り替える地球儀アイコンのあのボタンを
ここでは「グローブキー」と呼ぶことにします。)
style="display:inline-block;width:336px;height:280px"
data-ad-client="ca-pub-3481943934845626"
data-ad-slot="8806407289">
問題について
具体的にどんな問題なのかと言いますと、
・Spotlight検索で使えない(そもそもグローブキー自体ない)
・共有エクステンション・クイックリプライなどでグローブキーを押しても切り替わってくれない
・アプリ内でときどき切り替わらないことがある
・グローブキー長押しでキーボード名に(null)と表示される
・外付けキーボードでcontrol+spaceを押しても表示されない
カスタムキーボードを頻繁に使う人ならどれか1つでも心当たりがあるのではないでしょうか。
実は、これらの問題はどれも根本的には同じである可能性が高いです(まあ保証はしませんが)。
原因と解決策
まず原因はiOSのバグ、である可能性が非常に高いです(まあ保証はしませんが)。
そして海外のデベロッパーによると、
この現象の発生タイミングは「キーボードのインストール後、アップデート後」だそうです。
インストール後っていったら100%起こるじゃねえか!って感じですが、
少なくとも、アップデートをしていると再発するようです。
さてこの問題は「デバイスの再起動」でイチコロです。
再起動することによってお使いのキーボードがSpotlightで使えるようになり、
共有エクステンションでも使えるようになっているはずです(まあ保証は☺︎
アプリ内で発生した場合は、Appスイッチャーでそのアプリを閉じてから
再度ひらけば直るようです。
開発者向け
ここはXcodeを使う人向けの内容です。
自分のカスタムキーボードをデバッグしていると、
しょっちゅう(null)表記になり、どう頑張っても切り替えられなくなることがあります。
特にSpotlightや共有エクステンションのメール、メッセージなどのApple系でほぼ確実に再現できます。
僕が一番困ったのは、共有エクステンションのメッセージで動作確認したいときでした。
この場合、デバイスをいったん再起動させて再ビルドすると、ちゃんと切り替えられるようになります。
それでもその後のビルドで再び(null)になるので、
毎回再起動しないといけないということになりますが。
まとめ
iOSにカスタムキーボードが導入されてからしばらく経ちますが、まだまだ安定性に問題がありますね。
ときどき自分のカスタムキーボードがはじかれる(リストから除外される)ことがあるんですが、
これが発生するはっきりとした理由がまだわかっていません。
ビルドしたまま一定時間触らずにいると自動で消されることはわかっているんですが、
それ以外でも起きるような気がします。
疑うとしたらメモリの使用量だと思うんですが、メモリリークしているということでしょうか。
というわけでカスタムキーボードとの闘いはまだまだ続きそうです。
参考にした記事はこちら。
iOS 9 – Keyboard displays bundle name as “(null)” on upgrade
はじめまして。
CoardがiPad Proで使えるようになったということで、試してみたのですが表示できないようです。Coardを起動→Smart Keyboard接続という手順で試しています。
Smart Keyboardを使っているのですが、Bluetoothキーワードでしか使用できないからなのでしょうか?使い方が間違っているようでしたら、ご指摘いただければと思います。
よろしくお願いします。