FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

GooglePlay用のアプリバージョンチェッカーなるものを作ってみる

こんにちわ、@damayaです。

ANDROIDアプリをバージョンアップしたけど即反映ではない為、いつ変更されるかわからないモヤモヤありませんか?
今日はそんなモヤモヤを少し緩和できるPHPコードをご紹介します。


仕組みは簡単です。
監視対象アプリのバージョンが一致するまで、1分間隔で監視します。
バージョンアップした場合は、JavaScriptのAlertでお知らせします。

ソースを見るには「もっと読む」からどうぞ。

<html lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<meta http-equiv="Content-Script-Type" content="text/javascript" />
	<title>アプリバージョンチェッカー for Google Play</title>
</head>
<body>
	<form>
		<div id="message"></div>
		<table>
			<tr>
				<th>パッケージ名</th>
				<td><input type="text" name="id" size="30" /></td>
			</tr>
			<tr>
				<th>バージョン</th>
				<td><input type="text" name="version" size="30" /></td>
			</tr>
			<tr>
				<th colspan="2"><input type="submit" value="バージョンチェック" /></th>
			</tr>
		</table>
	</form>
	<script language="javascript" type="text/javascript">
	<!---
<?php
	$result_message = '';
	if(isset($_GET['id'])){
		$id = htmlspecialchars($_GET['id'], ENT_QUOTES);
		$version = htmlspecialchars($_GET['version'], ENT_QUOTES);
		if($id !== '' && preg_match('|^[0-9a-zA-Z.-]+$|', $id) && $version !== '' && preg_match('|^[0-9.]+$|', $version)){
			$market_html = file_get_contents('https://play.google.com/store/apps/details?id=' . $id, false, stream_context_create(array('https' => array('timeout' => 10))));
			if($market_html !== false){
				preg_match('/<dd itemprop="softwareVersion">(.*?)<\/dd>/i', $market_html, $version);
				if(isset($version[1])){
					$version[1] = htmlspecialchars($version[1], ENT_QUOTES);
					if($version[1] === $version){
						$result_message = '<a href=\"https://play.google.com/store/apps/details?id=' . $id . '\" target=\"_blank\">' . $id . '</a>';
						echo 'alert("' . $id . '\nのバージョンは ' . $version[1] . ' です");';
					}else{
						$result_message = $id . '&nbsp;のバージョンは、<b>' . $version[1] . '</b>&nbsp;のままです';
						echo 'setTimeout("window.location.reload()", 60000);';
					}
				}else{
					$result_message = 'Google Playの解析に失敗しました';
				}
			}else{
				$result_message = 'Google Playへアクセスできませんでした';
			}
		}else{
			$result_message = 'パッケージ名又はバージョンを正しく入力してください';
		}
	}
	echo 'document.getElementById("message").innerHTML = "' . $result_message . '";';
?>
	//--->
	</script>
</body>
</html>


10分くらいで作ったのでソースがアレですが、いかがでしょうか。
前回のアプリ公開チェッカーを改造しただけなんですけどね。
何かのお役にたてれば。