iOS 8からは、機能拡張(extension)というアプリ間の連携が強化されました。
この強化は本当に嬉しい限りです。
特に、Safariで機能拡張を使うとMacのSafariやChromeの様に様々な拡張機能を使うことができてブラウザの環境がMacに近づいたといっても良いぐらい快適です。
しかし、少し不具合があるようなのです。
共有(Share)とアクション(Action)という二つの機能拡張をSafariでは使えるのですが、どうも動作がおかしいことがあります。
どのようなことかというと、これらはSafariのツールバーにあるアクションボタンをタップすることによって、一覧表示されるのですがそれぞれのON/OFFや並び順を変更することができます。
Safariでももちろん変更できるのですが、どうやらこの並び順の設定が消えてしまうことがあります。
どのようなタイミングで再現されるのか、試してみました。
## Safariで検証
Safariを開いて、Extensionの並びを変えます。
そしてアクションボタンを押すと、問題なく変更後の並びになっています。
ここで、一度Safariをバックグラウンドからも落としてみます。
すると、初期状態に戻ってしまいました。
この症状によって、よく使うものはフリックせずにアクセスしたいのですが、出来ずにストレスが溜まっていました。
現状で使い続けるのもイヤなので、なんとか対処できないかと色々と試してみると、ある程度の回避策がありました。
他のアプリだと大丈夫な場合もある
他のアプリで試してみたのですが、例えばメモアプリだとシェア機能が使えます。そして、アプリを再起動しても問題なく覚えているんです。
なので、このメモアプリで設定をするというのが今回の案です。
しかし、これでもまだ完璧ではありません。
機能拡張(Extension)の種類が複数ある
機能拡張のShareやActionでは、使える情報の種類(テキストやURLなど)をいくつか設定できます。そして、呼び出し元のアプリが提示する情報の種類が使える情報と対応した機能拡張のみが表示される仕組みとなっています。
そして、アプリによっては一つの機能拡張でテキストとURLを受け取っているものもあれば、内部的には複数の機能拡張を持っていて、それぞれの情報の種類によって使い分けている場合もあります。
いくつか試してみた動作からの推測にはなりますが、Evernoteなどは、一つの機能拡張で複数の情報を受けているように推測できます。
Pocketなどは、複数の機能拡張を使い分けているように推測できます。
例えば、メモアプリの場合だと、テキスト情報のみ(たぶん)が機能拡張の対象となりテキストの情報を受け付けるアプリの機能拡張のみが一覧となっています。
Safariだと渡せる情報がもう少し多くて、テキスト以外にもURLやWebページなども渡すようになっているので、選択できる機能拡張が増えています。
上記のメモアプリで覚えさせた順序は、次の条件でSafariで開いた場合でもその順序を覚えているようです。
一つの機能拡張が複数の情報を受け取るタイプのもので、テキストの情報も受け取れるものであるという条件です。
それぞれの情報毎に機能拡張を分けていると思われるアプリの場合は、Safariでは機能拡張の順序が反映されません。
整理すると
問題を整理すると、Safariに限った問題ではなくURLやWebページを渡す場合には該当するExtensionの順序を変えても設定が反映されない問題があります。
これは、Chromeでも再現しましたので他の同様のアプリでも同じだと思います。
そして、テキストを受け取るだけの場合は、メモアプリなどを使って設定を変更できますがアプリによっては、テキスト入力とURLなどの情報の種類ごとに機能拡張を内部的には分けているので設定できていないように見える問題(?)があります。
Safariでは、この2つの問題が同時に発生するので、結構混乱してしまいました。
メモアプリで設定できるものだけ、設定してバグが改修されるまで凌ぐというのが今回の一応の妥協案です。