スマホを利用する上でWebサイトやアプリを開くのが当たり前ですが、それをひとつの枠組みにまとめて実行するレシピを考えてみます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS17.0.3
スポンサーリンク
普通なら
Webサイトもアプリも一緒のメニューから選びたい…という場合、普通にやるなら「メニュー」アイコンを使うことになります.
ただその場合ひとつの選択肢のたびに「URLを開く」や「アプリを開く」のアクションが必要になります.
リスト(メニュー)から複数のアプリを開くレシピというのも骨が折れる作業です.
それを補う手段としてURLスキームがありますが、アプリによっては今度はURLスキームが対応していません.
つまりWebサイトならURLを、アプリならURLスキームを、URLスキームがなければ他の手段が必要です.
それを解決する可能性としてアプリ名を書き込んだテキストを入力として開く方法があります.
「アプリを開く」はアプリラベルを入力とすることでも開くことが可能です.
ただし上の記事にある通り、同一ラベルのアプリを複数インストールしている場合どちらが開くかは確定ではありません.
それさえ問題なければURLスキームが対応していないアプリも「アプリを開く」で開くことが可能です.
残るは選択した項目の値が「URLを開く」で開けるWebサイトやURLスキームか、あるいはラベル名と「アプリを開く」を使う場合か…になります.
レシピ
今回場合分けで使う上で、選択肢の文字列に半角スペースを使います(なぜ半角スペースなのかは後述).
末尾に半角スペースがあればWebURLまたはURLスキーム、なければラベル名…とみなします(逆の方針にするならレシピも逆に組みます).
全体のレシピを先に載せておきます.
今回はWebURLからURLスキーム、ラベル名まで揃っているGoogleのみにしました.
まず最初の「辞書」アクションにサイトやアプリの情報を書き込みます.
値の種類はすべて「テキスト」にします.
WebURLやURLスキームを値にする場合はキーの末尾に半角スペースを追加します.
上で作成した辞書のキーに対して「リストから選択」を追加し、ひとつ選ばせます.
また選んだ辞書のキーに対する値(WebURL or URLスキーム or ラベル名)も取得しておきます.
選択した項目末尾を確認したいので「一致するテキスト」で.$にマッチさせます.
正規表現(.$にマッチ)がわからない場合はこちらのように半角スペースで一致するかどうかでも可能です.
ただしこれを使うと半角スペースを持つラベルのアプリも引っかかるので前者を使う必要があります.
上でマッチさせた末尾1文字に対してif文で場合分けします.
但しif文の入力である「一致」の種類を「テキスト」にする必要があります(①).
if文の条件には半角スペースをひとつ入れます(②)、つまり条件が合う場合というのは末尾に半角スペースを持つ、よって今回はWebURLまたはURLスキームであるということです.
よってこの場合は「URLを開く」で先程取得した「辞書の値」を開きます(③).
その他の場合というのは末尾に半角スペースを持たない、つまりアプリラベルのものを選んだということですから変数に「辞書の値」を入れた「アプリを開く」アクションを追加します(④).
これで完成です.
判別に末尾の半角スペースを利用したため見た目には普通の選択メニューと変わりません.
今回作ったレシピです.
最初の「辞書」アクションを弄るだけで好きに使えます.
〆
今回のレシピだとアクション数は合計で7個になります.
「メニュー」を使う場合だとそれに加えて各々「URLを開く」や「アプリを開く」が必要になってくるので7項目目からアクション数がひっくり返ることになります.
半角スペースを増やして場合分けを複雑化したり、「リストから選択」の手前で取り除く処理を加えれば半角スペースである必要もなくなります.