なんかできたよー。

Web系Tipsを適当につづるBlog.

iOSアプリ起動時にアップデートを知らせてApp Storeへ移動する

他の人がどうやって実装しているのか解らないため、参考程度にどうぞ

まず、「App Store」上のアプリページに移動方法ですが、端末上ですでにアプリをダウンロード済みの状態で以下の様にアプリページ(例:Skype)のURLを引数にとると「App Store」上のアプリページに自動で移動してくれます。
思った以上に簡単でびっくりでした。


# Titanium Mobile

Ti.Platform.openURL('https://itunes.apple.com/jp/app/skype/id304878510');

起動時にアップデートがあるか確認して知らせてみる

今回はサーバーにアプリのバージョン情報と移動先のURLを置いて、
それをアプリ起動時に「httpClient」で所得します。


# サーバー コード
簡単に認証っぽくしとくとむき出しよりかはマシかもしれません。

<?php

$app = $_GET['app'];
header( 'Content-Type: text/javascript; charset=utf-8' );

?>
<?php if ($app == 'てきとう'): ?>
{
    "version" : 1.1,
    "url": "https://itunes.apple.com/jp/app/skype/id304878510"
}
<?php endif; ?>


# Titanium Mobile

# アプリの内容
createApp = ->
  # いろいろ
  return


url = 'サーバーのURL'

# アプリの最新版
init = ->
  http = Ti.Network.createHTTPClient()
  http.open 'GET', url + '?app=てきとう'
  http.onload = ->
    json = JSON.parse http.responseText
    if Ti.App.version >= json.version
      # 最新版がインストールされているためアプリを起動
      createApp()
    else
      alertDialog = Ti.UI.createAlertDialog
        message: 'アプリの最新版がリリースされました。'
        buttonNames: ['スキップ', '詳細を見る']
      alertDialog.addEventListener 'click', (e)->
        if e.index is 0
          # スキップされたのでそのままアプリを起動
          createApp()
        else if e.index is 1
          # App Store へ移動
          Ti.Platform.openURL json.url
        return
      alertDialog.show()
    return
  http.onerror = ->
    # 確認が取れないのでとりあえずアプリを起動
    createApp()
    return
  http.timeout = 1000
  http.send null
  return


init()

# App Storeに移動したが何もせずに返ってきた場合用に
Ti.App.addEventListener 'resumed', createApp()

# どこかのタイミングでイベントリスナーを削除した方が良いかも
# Ti.App.removeEventListener 'resumed', createApp()