iOS18から特定のアプリにロックをかけられるようになりました.
しかしそれはTouchIDやFaceID、パスコードを使ったもの、つまりこれらと共用です.
オートメーションでアプリが開いたのをトリガーに「画面をロック」でもいいんですが、
- すぐにロック解除すれば使える
- そもそもアプリを開くたびに問答無用でロックされる
という面倒なデメリットがあります.
かといって「入力を要求」や「メニューから選択」、「リストから選択」でパスコードらしきものを作れはしますが、これはこれで枠外をタップしたりスワイプすることでスルーできてしまうザル仕様なのでパスコードロックとして役には立ちません.
そのためアプリを開いた時のトリガーだけではオートメーションによるパスコードロックは(自分が思いつくアイデアは)ありません.
「待機」で時間を待たせても、待機が終わるまでは他のアクションは実行されない…
これらのデメリットがあって、作ってみたいと思いつつ諦めていました.
今回パスコードなどと違う、すぐにロックするわけではない、それでいてちょっと趣向を凝らしたパスコードロックをやっと思いつきました.
元々の目的は寝落ちしたまま付けっぱなしになるのを低電力モードや自動ロック以外で実現することでした.
いずれかでも良いんですが、これらはすべてのアプリが強制的に対象となってしまうのが厄介なところです.
特定のアプリだけ制限をかけたい場合に今回のオートメーションが役立ちます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
スポンサーリンク
レシピ
0.仕様
- 専用のフラグをData Jarで用意
0:フラグが降りた状態
1:フラグが立った状態 - 然るべきタイミングから10秒後にフラグが立ったままならホーム画面に移動→画面ロック
→ロックだけならすぐに復帰して使える場合があるため、ホーム画面に移動してからロックさせる - 専用の集中モードを用意
→アプリが開いた後の処理でif文だけでは分岐できない処理があるため集中モードを使用 - ランダムに生成した4桁5個の整数からランダムにひとつ選んで入力させる
→正解ならスルー、時間内に入力できなかったり不正解ならホーム画面→ロック
、大雑把にこんな感じです.
1.Data Jarでフラグを作る
今回のオートメーションではData Jarを使います.
オートメーションに必要なフラグのためなのでファイルアプリなどでもいいんですが、Data Jarはデータ管理に特化しているので新規作成から編集までサクッとでき、アクションもわかりやすいとても便利なアプリです.
Data Jarをインストールして開き、"Add Value"をタップして"Number"を選択した状態でキーと値を入力します.
今回はapp_flgというキーにして、とりあえず値はフラグが立っていない0にしておきました.
2.専用の集中モードを作る
設定アプリを開き、「集中モード」にある右上の「+」をタップします.
(複数端末を使用している場合、下にある「デバイス間で共有」をオフにすると、他の端末を巻き添えにすることがなくなります.)
「カスタム」を選び、集中モードの名前とアイコンの色、グリフを決めます.
これで新しい集中モードができました.
今回はオートメーションのためだけに使うので、諸々の設定は弄らずそのままでいいです.
3.アプリを開いたときのオートメーション
次はアプリを開いた時のオートメーションを組みます.
ショートカットアプリを開き、画面下の「オートメーション」をタップして右上の「+」をタップ、「アプリ」を選びます.
希望のアプリを選びます(パスコードはランダム生成の仕様なのでここで複数選んでもいいです).
「開いている」にのみチェックが入っているのを確認し、「すぐに実行」にチェックして「次へ」をタップ、「新規の空のオートメーション」をタップし、レシピを組んでいきます.
オートメーションの中身は画像のように組みます.
現在の日付から10秒を足し、専用のオートメーションをその日付、つまり10秒間だけオンにします.
その後フラグを立てておきます、後述部分でも立てるのですがここは「パスコード入力を無視された場合」対策です.
4.集中モードがオンになったときのオートメーション
次は集中モードがオンになったときのオートメーションです.
ショートカットアプリのオートメーションから、先程作った集中モードを選択します.
「オンになったとき」にのみチェックが入っているのを確認し、「すぐに実行」にチェックを入れ「次へ」をタップし、先ほどと同じく「新規の空のオートメーション」を選択します.
オートメーションの中身を組みます.
まず画像のように1000から9999までの乱数を5回、適当な変数に追加します.
重複する可能性もありますが、今回はここから更にランダムにひとつ選ぶ仕様なので気にしないでおきます.
「ファイルにフィルタを適用」で上の乱数列を昇順に並び替えます.
(並び替えは必須ではないです)
1から5の間で乱数を取り、その数番目で乱数列からひとつ取ります.
これで1000~9999から取った5つの乱数のうち、ランダムにひとつ、インデックスを含めて取得したことになります.
「入力を要求」でパスコードを入力させます.
オプションを隠したままにしてしまいましたが、「小数点以下の数字を許可」「負の数字を許可」はいずれもオフにします.
また「テキスト」アクションを使って、上で取得した5つの乱数とそこからランダムに取った数(とそのインデックス)を使って、該当する数字を入力させます.
このとき立ち上がった集中モードの通知が邪魔になるので最初の2行分は改行して空けておきます.
「入力を要求」の結果が5つの数からランダムに選んだひとつと一致する場合は0を、そうでないなら1を「数字」アクションで指定し、そのif文の結果をData Jarで用意したフラグに上書きします.
最後に集中モードをオフにしてこのオートメーションは完了です.
5.集中モードがオフになったときののオートメーション
最後に集中モードがオフになったときののオートメーションです.
オンになったときと同様ですが、「オフになったとき」にだけチェックを入れるよう気をつける必要があります.
Data Jarで用意したフラグを"Get Value"で読み込みます.
"Number"にしているはずですが出力でそうならないようなので「入力から数字を取得」で数字にしておきます.
この結果が1、つまりフラグが立っていたら「ホーム画面へ移動」→「画面をロック」で強制的に該当アプリから抜けます.
0の場合は何もしません.
最後にフラグを降ろして(0にして)完了です.
実行
実際に対象にしたアプリを開くと画像のようになります.
2行空けたおかげでプロンプトの全体が見えていますが、端末によって違いはあるかもしれません.
正解すれば集中モードがオフになるだけでそのまま使え、不正解あるいは時間までに入力できなければホーム画面に戻った上で画面がロックされます.
〆
ちゃんと目視して何番目なのか確認し、5つの数からひとつ確認して入力…ということで、寝落ちしそうな状況ならいい感じにロックされるでしょうね.
「キャンセル」を選べば時間後に強制ロックされます.
またオートメーションの性質上、端末の種類や動作のモタつき次第でアプリを開いて集中モードがオンになるのに時間がかかる場合があります.
各々のオートメーションで複雑なことはしていないですが、3つ組み合わさることで全体がわかりにくいですね…
これもまたデメリットがあって、既に他の集中モードがオンになっている場合はオートメーションによる集中モードのオンオフが効きません.
なので現在の集中モードを取得してオフにしてパスコードロックの諸々を行って専用の集中モードがオフになったら最初に取得した集中モードをオンに…という更に面倒なことを強いられます.