内部処理の仕組みを大幅に変更し, 使いやすくしました.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS15.0.1
スポンサーリンク
ダウンロード
配布データはver2.1.1以前から大幅に変わっているため必ずこちらに差し替えてください.
USLauncher ver3.0 の変更・修正
- アップデートチェックの廃止
あれだけで17アクションほどあります.
よっぽどでない限りアップデートが頻発することはないですしあればここで記事にしてSNSに拡散…で十分と判断しました. - カスタム機能の廃止
ver3.0では検索の仕様に伴い、この機能が使えなくなりました.
2.xまでは「辞書」アクションのキーを自由に使えたためそのようなことができたのですが、v3.0では下でも説明する通り「ストアID+Appバージョン」で固定するよう変更したため、自由度がなくなりました. - 検索仕様の変更
plistで与えたキーに含まれる文字列を「ファイルにフィルタを適用」アクションで検索にかける方法から、「App Storeで検索」を使う方法に変更(詳細は後述). - その他テキストの追加、再実行の追加
検索仕様の変更
これまでは「辞書」のキーに各アプリのタイトルとバージョン、そして値にURLスキームを与えて処理していました.
キーに含まれるタイトルとバージョンの文字列はこちら側である程度「編集」してあります、具体的には「半角カナを全角カナに」「長過ぎる副題を割愛」などなどで、これを「ファイルにフィルタを適用」アクションでキーワード検索させます.
しかし「ファイルにフィルタを適用」にしろ「一致するテキスト」にしろ、検索の自由度としては弱いものとなります、例えば「モンスターハンター」を検索したいときに「モンハン」と打っても結果には表示されません、そのためわざわざキーにそれを入れないといけません.
そこで今回はキーに与える文字列を、「タイトル+バージョン」から「ストアID+バージョン」に変更しました.
というのもストアIDでApp Store検索できるんですね.
ストアIDなら各アプリ固有であり, 全角半角の心配も不要、特殊文字の心配も不要、アップデートでタイトル改変されても変わりません.
ストアIDは「Ap Store Appの詳細を取得」アクションで得られますから、App Store検索したAppのストアIDがplistデータの各種キーに含まれていればいいわけです.
App Storeでの検索あれば全角や半角の違いだったり略名だったりであっても問題ない上、サムネイル画像の付いていて探しやすく、検索の処理も相対的に速い…といい事ずくめです.
あとは一致したキーから値を取り出し、またキーにつけたバージョンも取り出せば多少の違いを除いてver2.xまでとまったく同じです.
そこまでの説明を下で簡単に行います.
まずは元データから(画像は全体の一部).
各々の値はこれまで同様URLスキームになりますが、キーについては
ストアID バージョン
となります.
この2つの間には半角スペースがあり, 後で後者を取り出すために使います.
なおこのバージョンは「URLスキームを調べた」バージョンであり、必ずしも最新のものとは限りません.
「フォルダからファイルを取得」でデータファイルをダウンロードしたパスを指定します.
この結果を辞書に変換します.
「入力を要求」と「App Storeで検索」のアクションを使ってアプリを検索します.
オプションで検索結果をiPadにしたり、地域を変更できるのもこのアクションだからこそですね.
上で得た検索結果を使って「リストから選択」で一つ選ばせます.
選択したAppのストアIDとバージョンを「App Stpre Appの詳細を取得」アクションで取得しておきます.
ただしapp.plistにあるバージョンとここで得られるバージョンのナンバリングが異なるアプリがあったりするので、レシピでは比較する場所を設けてるんですが余り参考にならないかもしれません.
ストアIDについては次のフィルタアクションで使用します.
検索した結果が収録するデータに含まれているかどうかは、今回はストアIDで行います.
plistのデータにあるキーには各アプリのストアIDを含むデータがあり、App Storeで検索した結果のストアIDは上で取得しました.
なので辞書にあるキーのうち、検索結果のストアIDを含むものがあれば「一致する」…という理屈です.
なので「ファイルにフィルタを適用」アクションで辞書の「すべてのキー」に対して、(「App Store Appで検索」で得た方の)ストアIDを含む列をフィルタします.
もし結果が空でなければ、収録するアプリに対応するキーと値の組を取得できます.
アプリ名は「App Store Appの詳細を取得」から得ればOKです.
フィルタした結果が空でない、つまり検索したアプリが配布データに収録されている場合は、フィルタの結果である辞書のキーを半角(空白)で分割し、最後の項目を取得することで「URLスキームを調べた時点での」バージョンが手に入ります.
キーに対応する値を取得すればそのアプリのURLスキームも手に入ります.
これで必要なものが揃ったので後はこれまで通りです.
もしフィルタした結果が空の場合、それは配布データにないということです.
画像は割愛していますが「もし「ファイル」が「任意の値」ならば」のifアクションの「その他の場合」でその処理を行っています.
また収録にあたりストアIDが存在することがデータ追加の前提条件となったため、ストアから削除されたアプリを追加することができなくなりました.
それに伴い、編集した配布データのラインナップも前回(9月)に比べかなり減った状態となっています.
既知の問題
特定のキーワードをApp Store検索にかけるとエラーになります.
検索するだけの簡単なレシピを作って試行すると結果を返さず強制終了するため、アクション側の問題と考えられます.
具体的にはreliphoneさんが先日紹介していたSvadilfariというアプリ名を誤字った"svadifari"(l抜け)で検索すると、本レシピでは上画像のように「"USLauncher ver3.0"ショートカットの実行に問題外ありました」という通知が表示され続きが実行されない場合があります.
簡単なレシピの方は上の通りで結果を返さずレシピが終了します.
その他、「スドリカ」というアプリをiPadで検索するとレシピが落ちることがあります(問題なく進む時もあります).
ランダムにアプリを選んでいるため他にも同様なケースがあるかもしれません.
〆
これまでは検索関連の処理が「ファイルにフィルタを適用」のみだったためオフラインでも使用可能だったんですが、全体の改善のためにApp Storeでの検索を行うよう変更したためネットにつながっていないとダメになりました.
というわけで「App Store Appで検索」アクション辺りに問題がありそうで改善と共に不安が残りますが、しばらくはこのやり方で更新していくつもりです.