どうもお久しぶりです。ブログネタはたくさんあるんですけど書く暇がなくて失踪していました。
さて、自分の所属団体では毎朝特定のURLにログインして体温を登録しなくちゃいけないのですが、(そこも適当な乱数を使用して自動化すればいいという話は置いておいて)たまにその存在を忘れるので、絶対見るLINEに通知を飛ばしてURLから直飛びできたらと思っていました。
なお、iOS13でもリマインダーにURLを載せてジャンプできる機能が搭載されましたが、リマインダーが来る→通知をタップする→URLをタップするという手間が本実装と同ステップなのと、LINEの場合、既読するまで通知が残り続けるので実行したかどうかが判別しやすいという差別化があり、本実装を実生活でも採用しています。
完成サンプル
編集が雑ですが、毎朝7:00にLINEを介して通知が来るようになっています。
想定環境
環境はiPhone11、iOS14.8、pythonista3 version3.3 ですが、特にバージョンに依存する挙動は採用していないのでなんでも動くと思います。
概略
ショートカットを利用して、pythonista3を毎朝7時に起動し、LINE Notifyと連動させてLINEで通知を受信します。
実装
1. LINE Notifyに登録する
LINE Notifyの使い方は
PythonでLINE Notifyへ通知を送る - Qiita
を参考にすると良いと思います。LINE Notifyに登録してトークンを取得してください。
2. pythonista3上でコードを書く
このあとショートカットを実装するときにpythonista内での相対PATHを指定する必要があります。この実装ではThis iPhoneの直下にスクリプトを記述することを想定していますがより深い階層の時どうするかなどは過去記事
iOSアプリ「ショートカット」と「pythonista3 」を連携させて朝アラームを止めたら自動で天気を読み上げさせる! - syleir’s note
を参考にしてください。
pythonista3を起動してThis iPhoneを選択、左下の+ボタンを押しEmpty Scriptを選択、適当にタイトルをつけて以下のコードをコピペします。
※pythonista3特有の注意点として、requestsライブラリについてはStashからインストールしなければならないことがあります。やり方は結構長いので別の方のブログにお任せします。
import requests def main(): url = "https://notify-api.line.me/api/notify" token = "取得したトークンを入力" headers = {"Authorization" : "Bearer" + token} message = "通知内容を入力、自分の場合は通知させたい入力フォームのURL" files = None r = requests.post(url, headers = headers, params = payload, files = files) if __name__ = '__main__'" main()
3. ショートカットと連携させる
これができたらショートカットを起動し、下部タブのオートメーションをタップ、オートメーションを作成します。
個人用オートメーションを作成から時刻を任意の時刻に設定して、アクションを追加を押し、スクリプティングからAppを開くを選択、「選
択」にpythonistaを入れます。
次に+を押して下の方にスクロールするとPythonistaという項目があるのでスクリプトを実行を選択、スクリプトの欄に/作成したスクリプトのタイトル、引数の欄には何も入れず作成し、完了を押します。ここまでできると以下のようになります。
完成
これにて完成です。あとは実際に動くかどうかを確認してみてください。開始して数日は原因不明の通知の遅延や一日複数回の通知がありましたがここ最近は安定して稼働しています。皆さんも忘れちゃいけないことがあればぜひ。
通知内容を変えてみたり、ファイルを送ることも可能なので色々応用が効くと思います。いいアイデアがあれば教えてください。
補足
pythonista3はあまり発展が少なく、勉強している人も少ないです。もっと発展的なUIの稼働やアプリの運用をしたい方は
PythonではじめるiOSプログラミング
がおすすめです。pythonista3の基本操作からちょっとした応用まで網羅的に記載されています。