Titaniumでアプリのアップデートをユーザにアラート通知する(iOSのみ)

  • 13
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。
  • TitaniumSDK: 3.4.1GA

Titanium Advent Calendar 2014 の12日目です。iOS向けです。

本当はGoogleAnalyticsでアクセスログ取って、そのログからランキング機能を作るという内容を書く予定だったのですが、先日GoogleAnalyticsのモジュールがアップデートされて、今までの知識で動かなかったので別の話をします。
GoogleAnalyticsの話はそのうち書いてQiitaにあげようと思ってます。

iTunes Storeからアプリの情報を取得する

アプリがアップデートされたらユーザに早く新しいVersionを使って欲しいですよね。
iOSの場合、iTunesのAPIを使えばアップデート情報を取得することが出来ます。

  • https://itunes.apple.com/lookup?id=appid

上記URLのappidに該当のアプリのidを渡せば現在のアプリの情報を取得できます。

また、取得したい国の情報を渡すことも出来ます、というかデフォルト言語を英語にしている場合、上記URLにアクセスしても英語の情報しか取得出来ません。
日本語のアプリ情報を取得したい場合、&country=jpをつけます。

試しに、私のアプリのアプリ情報を取得してみます。

{
    resultCount: 1,
    results: [
        {
            kind: "software",
            features: [ ],
            version: "5.0.1",
            releaseNotes: "・登録したポケモンを呼び出す系の処理の不具合を修正。 ・アプリが頻繁に落ちる問題に対処。 バグすまん!!!!!!!!!! Appleに審査NG食らったんや!!!!! メガラティは次回アプデで載せます!!!!!! あと、個体値ずかんと同様、アプリが頻繁に落ちる問題に対処しました。感想お待ちしてます。"
        }
    ]
}

本当はもっと情報は多いのですが、だらだら長くなってしまうので一部のみ抜粋しました。

取得した情報の中にversionという情報がありますね。
このversionがAppStoreに出ている最新versionになるので、これとアプリのローカルのversionとを比較すればいいのです。

ユーザが利用しているアプリのバージョンと取得したバージョンの比較

var url = "http://itunes.apple.com/lookup?id=788705666&country=jp";
var xhr = Ti.Network.createHTTPClient();
xhr.open('GET',url);
xhr.onload = function(){
    var j = JSON.parse(this.responseText);
    // インストールされているアプリのバージョンの数字のみ抜き出し
    var tiVer = Ti.App.version.match(/\d/g).join("");
    // ストアにあるアプリのバージョン
    var appVer = j.results[0].version.match(/\d/g).join("");
    // アプリのバージョンを比較
    if (tiVer < appVer){
        alertNewVer(j);
    }
};
xhr.onerror = function(error){

};
xhr.send();

// 最新バージョンを通知
function alertNewVer(j){
    var msg = "最新ver "+j.results[0].version+"が入手可能です。\nver "+j.results[0].version+"でのアップデートは、\n"+j.results[0].releaseNotes;
    var alert = Ti.UI.createAlertDialog({
        title:"アップデート",
        message:msg,
        buttonNames:["アップデート","キャンセル"],
        cancel: 1
    });
    alert.show();
    alert.addEventListener('click',function(event){
        // アップデートを選択したらストアに遷移
        if(event.index == 0){
            Ti.Platform.openURL(j.results[0].trackViewUrltrackViewUrl);
        }
    });
}

ユーザの端末にインストールされているアプリのバージョンと、AppStoreから取得したバージョンを比較しAppStoreのバージョンが新しい場合アップデートを促すアラートを表示しています。汚くてすみません。

これをindex.jsとかで呼べば、ユーザがアプリを起動する度にチェックが走り最新版をアラート通知出来ます。

app.png

次回は jaxx2104 さんです!!!!!!!!!!!