ショートカットによってWi-Fiを完全にオフにできるようになったのは周知のことですが, 明るさや音量のように「現在の状態」を知ることができないため, ワンタップでオンオフができないのがもったいないですよね.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のバージョン : v4.0.1
スポンサーリンク
前準備(データの読み書き)
まず「現在の情報」に相当するデータをどこかに書き留める必要があります.
いつものようにbearというメモアプリを使います.
前準備の話が不要の場合は飛ばしてください.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
読み込み
最初に読み込みから考えてみます.
画像の最初にある文字列はそのノートのID(識別子)で, 画面右上の三点アイコンにある「リンクをメモにコピー」から取得できます.
はじめに読み込みを考えるため, 予めデータとなる情報を手書きしておきます.
0や1といったシンプルなものでも構いませんが, 数が多くなると辞書アクションを使うと便利になります.
今回例示した辞書データは画像の通りで
{"var":{"x1":10,"x2":200}}
となっていますが, イメージとしては上の画像のような関係にあります.
データが少ない場合であれば辞書を使う必要はありませんがここでは使うことを想定し, この文字列をショートカット内で辞書として扱い, 必要なデータを取り出すことを目的とします
.
まず「Bearメモの内容を取得」アクションで指定メモ全体を取得します.
「メモの識別子」に先程取得したIDの部分を入力し, 一旦「テキスト」アクションに貼り付けます.
ショートカットにおいて改行付きのメモは改行ごとに項目として取り出せるわけではないため, 「テキストを分割」アクションによって改行で区切ります.
一文ずつ区切られたので「リストから項目を取得」アクションを使って最後の項目を取得します.
今回その「最後の項目」は辞書の構文になっているため, 一旦「入力から辞書を取得」アクションでショートカットにおける「辞書」の扱いにします.
無事辞書となったので, 「辞書の値を取得」アクションでデータを取り出します.
先日の辞書関連の記事で紹介した通り, 今回のようないわゆる「階層辞書」における深い場所の値を取り出す際は, キー同士をピリオドで繋げることで指定することが可能です.
今回であれば例えばx1の値を取り出した場合, 辞書の大本であるvarとその下であるx1のキー同士を繋げてvar.x1、これをキーとします.
同じようにx2の値を取り出します.
念の為この「結果を表示」アクションで確認します.
きちんと表示されたのを確認できればOKです.
書き込み
続いて書き込みも行います.
前回に続けて行ってみましょう.
「入力を要求」アクションにした意味は特にありません, 目的次第で何らかの形で「x1の値が変わった」ことを想定しています.
「何らかの処理」が終わったら「変数を設定」でx1自身を変数名にすることで上書きとなります.
続いて「テキスト」アクションを使って辞書(実際はJSONですが)の雛形に合わせて構文を書き込みます.
今回は
{"var":{"x1":[x1],"x2":[x2]}}
とし, ここで[x1],[x2]はそれぞれ変数のx1,x2を指します.
これを「入力から辞書を取得」で辞書にし, 「Bearメモに追加」アクションで書き込みます.
ちゃんと値が変わっていればOKです.
Wi-Fi切り替えのショートカット
では本題へ移ります.
予めBearで新規メモ(あるいは専用にするメモ)を作成しておき, 画面右上にある三点アイコンから「リンクをメモにコピー」をタップし, ID(識別子)を控えておきます.
本文末行には予め
{"status":0}
と入れておきます.
今回は0をWi-Fiオフ, 1をオンということにします.
ここからはショートカットのフローになります.
まず「Bearメモの内容を取得」アクションで先程指定したメモの内容を取得します.
「メモの識別子」には先程コピーしたリンクのID部分を入れます.
続いて「テキスト」にメモの内容をそのまま出力し, 「テキストを分割」アクションで改行で区切ります.
「リストから項目を取得」アクションで最後の項目を取り出します.
取り出した項目は辞書(JSON)に相当する文字列なので, これを「入力から辞書を取得」アクションで辞書にします.
出力した辞書から「辞書の値を取得」アクションで値を取り出します.
これであとはif文を使って…と言いたいんですが, いつだったかわかりませんがこの時点では取り出した値が数であったとしてもif文のアクションで数と認識してくれません.
そのため「数字」アクションに辞書の値を入れる一手間が必要になります(wStatusという変数に代入したのは必須ではありません).
ともかくこれで(記録上)前回のWi-Fiの情報が手に入ったので, そのステータスに応じてWi-Fiのオンオフ…だけでなく, オンオフしたことによって変わったステータスの辞書(JSON)をBearに書き込みます.
Wi-Fiの切り替えとBearの書き込みは逆でも構いません.
これでBearメモの文末にあるWi-Fiのステータスを元にWi-Fiが切り替わり, その後その情報が追記されます.
〆
分かる方はすぐに気づいたでしょうが, この方法には弱点があります.
考えれば当然のことで, このショートカットでは
- 設定アプリなどからのオンオフ操作
- ウィジェットからのオンオフ操作
を監視しないため, 例えばBearメモの末行が1(オン)であってもすでに他の操作でオフにしていたため, ショートカットでは気づかずオフにしようとする…なんてことが起こります.
「現在の状態」をその時点で取得できないのは痛いですね.
ただ今回のような, bearを使ったデータのやり取りというのはとても便利です.
同じデータのやり取りでも標準のメモアプリはメモを開くこと自体ができませんし, iCloudやDropboxはオフラインでは読み書きできません.
アプリさえ入れておけばネットに繋がっていなくても端末で完結する強みがあります.