【iOS】GoogleAppScriptを使ってAppStoreへのアプリ更新を検知する

概要

AppStoreのアプリ更新を行ってもストアの影響により反映遅延が起こります。

ストア反映遅延の例

配信作業は完了しているのにストアに反映されない...。

反映まで30分かからない日もあれば6時間経っても反映されない日もあります。

Appleガイドラインでは最大24時間かかるらしいです。

Apple Store Reviewガイドライン

反映時間は日によって変わってしまうのですが原因は不明です。(Apple様のご機嫌次第)

まだかまだかと反映を待って何度も確認するのは面倒&心臓に悪いので、

GoogleAppScript(GAS)でSlackに通知してくれる仕組みを作りました。

手順

Slackのセットアップ

通知するSlackに通知用チャンネルを作りIncoming Webhookを設定しておきます(参考)

GoogleAppScriptの作成

以下のGoogleAppSctiptを作成します。

// iOSのストア反映を検知する
// トリガーで毎分実行する
// 更新が見つかるとSlackに通知する

// ・事前準備
// SlackのIncoming Webhookを作る
// ・事後準備
// 毎分起動するトリガーを設定する

// ストアのURLは https://apps.apple.com/jp/app/{アプリ名}/id{アプリID} の形式になっている
var appId = "アプリID";

// iTunes Search APIを用いてストア情報を取得する
// APIの結果はキャッシュが有効なのでパラメータを更新して取得する
var unixtime = new Date().getTime();
var iosUrl = "https://itunes.apple.com/lookup?id=" + appId + "&country=JP" + "&" + unixtime;

// プロパティKey
var iosKey = "iOSVersion";

// 新しいバージョンを検知
function checkNewVersion()
{
  // スクリプトプロパティから最終確認バージョン取得
  var userProperties = PropertiesService.getUserProperties();
  var currentVersion = userProperties.getProperty(iosKey);
  
  var storeVersion = getStoreVersion();
  
  // 新しいバージョンがあれば最終確認バージョンを更新しSlackに通知
  if (currentVersion != storeVersion) {
    userProperties.setProperty(iosKey, storeVersion);
    sendToSlack(storeVersion)
  }
}

// ストアバージョンの取得
function getStoreVersion() {
  var response = UrlFetchApp.fetch(iosUrl);
  var parsedData = JSON.parse(response);
  var version = parsedData["results"][0]["version"];
  return version;
}

// Slackに通知
function sendToSlack(body) {
  // SlackのWebhookURL
  var url = "SlackのWebhookURL(https://hooks.slack.com/services/XXXXXXXXXX)";
  var data = { "channel" : "{チャンネル名}", "text" : body};
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var response = UrlFetchApp.fetch(url, options);
}

実行トリガーの設定

GoogleAppScriptエディタの 「編集」 > 「現在のプロジェクトのトリガー」からトリガーを追加します。

f:id:tetsujp84:20191212013246p:plain

今回の規模ならGoogleAppScriptは個人ユーザーの無料プランでも1分おきに実行できます。 (GoogleAppScript利用制限)

バージョンに更新があったらSlackに新しいバージョンが通知されます。

終わり

そもそも反映遅延が起こる原因と対策が知りたいところ。

参考

[iOS] iTunes Search API を利用してアプリの情報を取得する