별도의 앱을 설치하지 않고 정해진 시간에 Android 기기에서 앱을 실행합니다.

계기



날짜와 시간대를 지정하여 시작하려는 앱이 있습니다. 예를 들어 mineo 앱 등 매일 한 번 앱을 시작하고 시작 보너스를 회수하고 "유즈루네"를 선언하고 싶은 경우가 있습니다.

그런 때를 위해 AutomateIt 등의 앱도 있습니다만, 아무래도 AutomateIt는 다기능인 분 단말에 걸리는 부하도 크고, 평상시 사용하는 것 같은 단말에는 그다지 넣고 싶지 않습니다.

그러한 경우에는 Join by Joaoapps(이하 Join)의 API를 사용하는 방법이 있습니다. 이를 사용하면 API를 통해 특정 URL을 브라우저에 열거나 앱을 시작하는 등 URL을 두드리는 것만으로 실현할 수 있습니다.

하는 방법



먼저 API KEY와 기기 ID를 확인하려면 Join On The Web을 엽니다.



왠지 문자가 겹쳐 표시되어 버립니다만, 우선 클릭하면 단말명은 표시되므로, 기동하고 싶은 단말을 선택합니다.

그런 다음 JOIN API 버튼을 클릭합니다.



API Key: 오른쪽의 SHOW 버튼을 누른 후 화면을 스크롤하여 App Package To Launch 행에 시작하려는 앱의 패키지 이름을 넣습니다.



PC에서 확인하기 어려운 경우 Play 스토어에서 앱 페이지를 열면 확인할 수 있습니다.



그런 다음 Join On The Web 화면에서 위쪽으로 스크롤하면 "Fill in fields below then select -> Copy URL to use"의 행에 "joinjoaomgcd.appspot.com"에서 시작하는 긴 URL이 표시됩니다. 이것을 복사합니다.



이 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입니다.



동작 테스트를 하고 싶은 경우는 「시간 기반 트리거의 타입을 선택」을 「분 기준의 타이머」, 「시간의 간격을 선택(분)」을 「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에서 문자가 겹쳐 버리는 것 등으로부터, 단말명은 제대로 지정하도록 합시다.

좋은 웹페이지 즐겨찾기