先日のレシピを応用します.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS18.0.1
スポンサーリンク
1.Safariに飛ぶ厄介な広告
ポイ活などをやっていると、動画視聴が求められる場合があります.
これは主に2種類考えられます.
- 他アプリへ移動せず該当アプリで関係する動画広告
- アプリから強制的にSafariが開き、再生される広告動画
今回対象となるのは後者です.
はじめに理屈を述べると、
- 対象アプリが開いたらそのアプリが開いたというフラグを立てる
- 対象アプリでSafariが開き広告動画が流れる場合そのタブを閉じて対象アプリを開き直す
- 1で立てたフラグを下ろす
という感じです.
アプリが開いたかどうかを判定するフラグは、今回はData Jarというアプリを使います.
「ファイル」アプリや「メモ」アプリでもいいですがいずれもメリットデメリットがあります.
2.Safariの対象リンクタブを閉じるレシピ
まずは消したい動画広告を閉じるレシピを作ります.
オートメーションの中で組むと後で追加編集するのが大変面倒なのでレシピとして作っておくのが良いです.
まず、Safariから削除したいサイトURLのリストを作ります、某スマートライフジムとかですね.
完全一致の必要はなく、基本的にはドメインだけで十分です、スキーム(http://やhttps://)はどれもくっついてるに決まってるのでわざわざ書く必要はありません.
ただそれだとソフトバンク公式のように、利用するページが別に存在する可能性がある場合はその下のサブディレクトリ(例えばhttps://a.com/hogeならhogeの部分)まで書いておくといいです.
動画広告の類は一定期間経つと別のモノに置き換わったりします.
数が増えるとそれだけ処理に時間がかかるので可能なら定期的にチェックして追加や削除する必要があります.
この点がちょっと煩わしいんですよね.
あとは先日のレシピに倣ってタブを閉じていきます.
最初のリストに対して「各項目を繰り返す」を適用し、「タブを探す」アクションで各リストにあるURL(の一部)を含むものをフィルタします.
ただ「タブを閉じる」アクションはあくまでもタブひとつが対象です、なのでフィルタした結果に対して更に「各項目を繰り返す」を追加し、フィルタしたタブひとつひとつに対して「タブを閉じる」必要があります.
2つの「繰り返し項目」が存在することになるので画像の通りにします.
これでリストされた文字列を含むURLのタブを閉じることができます.
このレシピ単体でも当然使えます.
3.アプリからSafari広告へ飛んだらそのタブを閉じてアプリへ戻る
今回のメインの話です.
ちょっと仕組みが面倒です.
3.1:Data Jarにフラグを作る
先ほども紹介したData Jarというアプリをダウンロードし、アプリを開きます.
画面にある"Add Value"か画面右上にある+アイコンをタップし、"key"とある項目に好きなフラグ名を入れます(今回は"launch flg"などとしています).
上にあるTextやNumberなどのボタンはデフォルトのTextのままで大丈夫です.
また"key"の下にある"Value"は空のままでいいです.
入力を終えたら画面右上の"Save"をタップします、これで入力した文字列をキーとしたフラグの役割を果たすデータが追加されます.
Data Jarアプリでの操作はこれで終わりです、ショートカットアプリに移動し今回の根幹となるレシピを組みます.
このデータは複数のアプリを想定しているため厳密にはフラグでなく「今どのアプリを開いたか」をチェックするためのものです.
なので例えばXを開いたらX、LINEを開いたらLINE…などと書き込むというわけです.
アプリを閉じたらこの値は空にするか各アプリと無関係な文字列に上書きしておくことも忘れてはいけません.
3.2:フラグに応じて各アプリを開くレシピを作る
次はフラグの値に応じてアプリを開くレシピです.
まずData Jarの"Get Value"アクションで先程作ったフラグのキーを指定することでそのキーの値を取り出します.
念の為、この値を「入力からテキストを取得」でテキスト形式にしておきます.
if文を追加し、取得したテキストが任意である場合に各々の処理を行います.
まず共通する処理として見出し2で作った、広告タブを閉じるレシピを「ショートカットを実行」で実行します.
等しいかどうかのアプリ名は本来のラベル名と同一である必要はありません.
後述する見出し3.3でData Jarにセットする文字列と同一であれば極端な話全然関係ない文字列でもいいです(アプリ名にするのが無難なのは言うまでもありません).
その後はData Jarの"Get Value"で取り出したフラグに応じたアプリを開きます.
例えばフラグの値が"aruco"であった場合はarucoアプリを開きます(画像で赤く囲った部分).
画像ではわざわざ「テキスト」アクションにアプリのラベル名を入れて「アプリを開く」で開いていますが、本来であれば「アプリを開く」ひとつで十分です.
こちら側の問題か不明ですが、使っていくうちに「アプリを開く」で指定したアプリが勝手に別のアプリに変わる不具合があったため今回のやり方をしています.
アプリが2つ3つある場合は赤く囲ったやり方でどんどん追加していきます.
全部追加したら最後にData Jarで用意したフラグを下ろします.
無記入の「テキスト」アクションにData Jarの"Set Value"を使ってフラグにテキストを上書きすればOKです.
3.3:対象アプリが閉じたらフラグを立てるオートメーション
Safari広告に飛んでしまうようなアプリを使用中、その広告がSafariで開いてしまった場合フラグにそのアプリであることをフラグとして立てるオートメーションを作ります.
ショートカットアプリの「オートメーション」を新規作成し、トリガーは「アプリ」にします.
「アプリ」に対象のアプリを指定します(①).
ただし指定するアプリはひとつずつです.
その下は「閉じている」のみチェックを入れます(②)
更に「すぐに実行」にチェックを入れ、「実行時に通知」がオフであることを確認した上で画面上の「次へ」に進み、「新規の空のオートメーション」をタップします(③).
「テキスト」アクションを追加し対象のアプリに関係する文字列を入れ、Data Jarの"Set Value"ではじめに作ったキーの値として上書きします.
見出し3.2でも書いた通り、この文字列はフラグが一致するかどうかに使われるものなので、基本はアプリ名にするのが無難です.
このオートメーションを、利用するアプリすべてに対して作ります.
3.4:元のアプリに復帰するオートメーション
アプリ内でSafari広告に飛んでしまった場合、見出し3.2で作ったオートメーションによりData Jarで作ったフラグに該当アプリ名が書き込まれます.
なので次は「Safariを開いたとき、フラグが経っている場合はそのアプリを開く」オートメーション、つまり元のアプリに復帰できるオートメーションを組みます.
ショートカットアプリの「オートメーション」を開き、トリガーはアプリにします.
対象のアプリは"Safari"にします(①).
その下は「開いている」にのみチェックを入れます(②).
「すぐに実行」にチェックを入れ、「実行時に通知」がオフになっていることを確認します(③).
画面右上の「次へ」をタップし、「新規の空のオートメーション」をタップします(④).
編集画面で「ショートカットを実行」アクションを追加し、見出し3.2で作ったレシピを実行します.
これで全工程が完了です.
〆
全体的に面倒ですが一度作っておけばあとは2で作ったレシピの先頭のリストを弄るくらいで済みます.
ただそれでも厄介な点があり、
- 動作が重い?とアプリに戻るまで時間がかかる、最悪戻ってくれない
- 見出し3.2で作ったレシピの最後で下ろしたつもりのフラグが下りないことがある
- 複数端末で同期した上でこの仕組みを共用するとフラグが他端末に影響を与える
- アプリ内で完結する動画広告は対象外
などがあります.
3つ目についてはフラグと3.2で作ったレシピを別で作ることで解決します.
同期したiPhone8とiPhone12mini、iPad Air3の3機種で一週間ほど試験運用した結果としては上の3つの問題が頻繁でないもののありました(3は上に書いた方法で解決).
いつかAppスイッチャーに並んでるアプリを取得とかできたらこんな面倒なことしないで済むんですけどね…