Help us understand the problem. What is going on with this article?

別途アプリをインストールせずに、決まった時間にAndroid端末でアプリを起動する

きっかけ

日付や時間帯を指定して、起動したいアプリがあります。たとえばmineoアプリなど、毎日一回アプリを起動させて、起動ボーナスの回収と「ゆずるね」の宣言を行いたい場合などがあります。

そういうときのためにAutomateItなどのアプリもあるのですが、なにぶんAutomateItは多機能な分端末にかける負荷も大きく、普段使いするような端末にはあまり入れたくありません。

そういうときには、Join by Joaoapps(以下Join)のAPIを使う という方法があります。これを使うとAPI経由で特定のURLをブラウザに開かせたり、アプリを起動させたりといったことがURLを叩くだけで実現できます。

やりかた

まず自分のAPI KEYとデバイスIDを確認するため、Join On The Webを開きます。

image.png

なぜか文字が重なって表示されてしまうのですが、とりあえずクリックすれば端末名は表示されるので、起動したい端末を選びます。

次に、JOIN APIのボタンをクリックします。

image.png

API Key: の右にある「SHOW」ボタンを押したあと、画面をスクロールして「App Package To Launch」の行に、起動したいアプリのパッケージ名を入れます。

image.png

PCで確認することが困難な場合は、Playストアでアプリのページを開くと確認できます。

image.png

ついでJoin On The Webの画面で上の方にスクロールすると、「Fill in fields below then select -> Copy URL to use」の行に「joinjoaomgcd.appspot.com」からはじまる長いURLが表示されていますので、これをコピーします。

image.png

このURLを定期的に実行されるような何かで呼び出すようにすればOKです。

たとえばPowerShellの場合は、次のようなコードになります。

curl "https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush?appPackage=jp.mineo.app.mineoapp&deviceId=...&apikey=..."

GASで定期的に実行する

ローカルにファイルを置いてしまうとバックアップやPC復元時の設定が面倒なので、こういうときはGoogle Apps Scriptなどで処理してしまうと楽です。

GoogleドライブでGoogle Apps Scriptのプロジェクトを作成し、次のようなコードを書きます。

コード.gs
function run() {
  const url = "https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush?appPackage=jp.mineo.app.mineoapp&deviceId=...&apikey=..."
  UrlFetchApp.fetch(url) 
}

これを保存し、トリガーの設定で、「毎日n時台に実行」などとやっておけばOKです。

image.png

動作テストをしたい場合は「時間ベースのトリガーのタイプを選択」を「分ベースのタイマー」、「時間の間隔を選択(分)」を「1分おき」などとしておくと、1分後にスクリプトが実行されるので動作を確認しやすいですね。

おまけ:JOIN APIのエントリポイント

JOIN APIの解説ページを見ると、見出しが「API Key」と「Send Push」と「Notification Field」と「List Devices」しかなく、URLっぽいものが「List Devices」の真下にしかないため、一見して「どう呼べば良いんだ?」と思ってしまうこともあると思います(わたしはあった)

ただ先にJoin On The Webのほうをちゃんと見れば分かるとおり、「Send Push」のエントリポイントを叩くURLはJoin On The Webのほうを確認すれば分かりますので、ここには記載されていません。

ちなみに、下にある「List Devices」というAPIもちゃんとあり、Joinに登録されている(アカウントと紐付けされた)デバイスの情報が出力されます。

curl "https://joinjoaomgcd.appspot.com/_ah/api/registration/v1/listDevices?apikey={Join On The WebのJOIN APIボタンにて確認できるAPI Key}"

注意点

特にないですが、Join On The Webに書かれているとおりAPI Keyさえ分かってしまえば認証など一切無しでデバイスが操作できますので、API Keyが外部に漏れないように気をつけましょう。

また、Join On The Webで文字が重なってしまうことなどから、端末名はちゃんと指定するようにしましょう。

TakamiChie
NPO法人 まちづくりエージェント SIDE BEACH CITY.理事。フリーランスのプログラマ。横浜・横須賀でIT勉強会の主催などをやってます。
https://onpu-tamago.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした