【iOS】GoogleAppScriptを使ってAppStoreへのアプリ更新を検知する
概要
AppStoreのアプリ更新を行ってもストアの影響により反映遅延が起こります。
ストア反映遅延の例
11/14(水)9:00より実施しておりますバージョンアップメンテナンスですが、ストアへの反映が遅延しているため11/14(水)14:00まで延長させていただきます。
— ぷよぷよ!!クエスト公式(ぷよクエ) (@puyoquest) 2019年11月14日
ご利用のお客様にはご迷惑をお掛けしてしまい申し訳ございません。https://t.co/UBCS3w5lN3#ぷよクエ
【FGO】詫び石1000個はよ。Appleストア反映遅延のため先の見えないメンテ延長に…https://t.co/IGBZO1f3sf#FateGO #FGO pic.twitter.com/fU72JBNlLY
— FGOまとめ速報 (@FateGrandOrder) 2019年11月27日
配信作業は完了しているのにストアに反映されない...。
反映まで30分かからない日もあれば6時間経っても反映されない日もあります。
反映時間は日によって変わってしまうのですが原因は不明です。(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エディタの 「編集」 > 「現在のプロジェクトのトリガー」からトリガーを追加します。
今回の規模ならGoogleAppScriptは個人ユーザーの無料プランでも1分おきに実行できます。 (GoogleAppScript利用制限)
バージョンに更新があったらSlackに新しいバージョンが通知されます。
終わり
そもそも反映遅延が起こる原因と対策が知りたいところ。