[AS3] Air for iOS(Adhoc)とAndroidで書き出したファイルをネットワーク越し(Over The Air = OTA)にインストール

2013/01/18

こんにちは。きんくまです。

1月からの新アニメは面白いのが結構ありまして。で、琴浦さんが好きな感じです。
HPに書いてあった原作の出版社がマイクロマガジン社とか書いてあって、あれ?これってもしかしてと思ったら、昔出版されてた「ゲーム批評」という雑誌の出版社で、懐かしさでいっぱいになりました。
初期の頃はよく読んでたんですよねー。途中からあんまりゲームやらなくなって見なくなってしまったのですけど。
自分はこういうマイナー雑誌のコラムとかが結構好きでした。

さてここから本題です。
FlashでAir for iOSとAir for Androidでそれぞれ書き出したファイルを他の人(クライアントとか)に確認してもらうときに、ネットワーク越し(iOSではOver The Air = OTAとかいうらしいです)でできると良いです。

iOSの場合はAdhoc書き出しが必要になります。
ふだんやってるネイティブの開発環境のXcodeでAdhocをやった場合と少し違っていたのでメモっておきます。

ファイル構成

ここでは仮にアプリ名をsampleとします

HTMLファイル
・インストールのリンク一覧が載ったhtmlファイル
(このファイルを用意しないで連絡するときにメールにリンク直書きでも可)

iOS用
・sample.ipa(アプリ本体 Adhocで書き出しておく
・sample.plist(拡張子がplistのテキストファイルです)
・xxxxxxxx.mobileprovision(プロビジョニングファイル Adhoc用にしておく) flashでもProvisioningは埋め込まれる

—-
2013/01/25 追記
クライアントからインストールできないとの連絡があり、調べてみました。

何故だかは全くわからないのだけど、Flash CS6 ver 12.0.2.529でAir for iOS書き出しをした場合は、

certificate:
development(開発用)

provisioning profile:
iOS Team Provisioning Profile(XcodeのOrganizer > LIBRARY > Provisioning Profiles の右下でRefleshを押すと自動で追加されるプロビジョニングファイル)

だとインストールができた。

逆に言うと、Xcodeで書き出すように、

certificate:
distribution

provisioning profile:
Distributionタブで作ったAdhoc用のもの

だと何故だかインストールができなかった。

なんで??? これって開発用の証明書で配布しちゃってOKってことなの???
ていうか何でそれが通るのかわからんです。

うーん、今後仕様がどう変わるのかわかりませんが、自分が試したところではこうなっているようです。
—-

Android用
・sample.apk(アプリ本体)

Basic認証やhttpsについて

上記ファイルたちをネットワーク上に置くのですが、Androidの場合はBasic認証がかかっていると駄目なようです。

>> apkファイルをAndroid端末(実機)にインストールする方法|Android|モバイル/スマートフォン|PHP & JavaScript Room

iOSの方は今までの経験からBasic認証がかかっていても、https越しでも問題なくインストールできました。

htmlとplistの書き方

htmlファイルの例

こんな感じのファイルがあればインストールする人もやりやすいかと思われ。

air_for_ios_android_over_the_air_fig1

※2013/01/25 コード修正

<!DOCTYPE> 
<html>
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width" />
<title>Adhocアプリのインストールのサンプルです</title> 
<style>
body{
	background:#fff;
	margin:0px;
	padding:0px;
	font-family: "Hiragino Kaku Gothic Pro W3", sans-serif;
}
p, dl, dt, dd{
	margin:0px;
	padding:0px;
}
#content_wrapper{
	font-size:14px;
	line-height:160%;
	background:#fff;
	width:700px;
	margin:0 auto;
	padding-top:15px;
	padding-bottom:15px;
	padding-left:30px;
	padding-right:30px;
}
h1{
	font-size:18px;
	margin-bottom:30px;
	color:#666;
}
h3{
	font-size:16px;
	margin-bottom:15px;
	font-weight:normal;
	border-left:5px solid #764ABC;
	padding-left:10px;
}
.install_area{
	border:1px solid #ccc;
	padding:15px;
	margin-bottom:40px;
}
</style>
</head> 
<body>
<div id="content_wrapper">
<h1>Adhocアプリのインストールデモ タイトルですよ</h1>

<h3>iOS版</h3>

<div class="install_area">

<p>iPadのSafariからご覧ください<br>
下記リンクをクリックしてインストールしてください<br>
<a href="itms-services://?action=download-manifest&url=http://xxxxx/xxxxxx/sample.plist">>> iOSアプリをインストール</a></p>
</div>


<h3>Android版</h3>

<div class="install_area">

<p>Android端末のブラウザからご覧ください<br>
下記リンクをクリックしてインストールしてください<br>
<a href="http://xxxxx/xxxxxx/sample.apk">>> Androidアプリをインストール</a></p>
</div>

</div>

</body>
</html>

気をつけるのはiOSアプリへのリンクにitms-services://?action=download-manifest&url=をつける必要があるところです。
あとそのときのURLは絶対パスとなります。

Xcodeから書き出す場合はプロビジョニングファイルをアップする必要がないのですが、Air for iOSではipaに埋め込めないので別でアップしてあげます。

すみません!Air for iOS でも埋め込まれてました。

plistファイルの例

sample.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>items</key>
	<array>
		<dict>
			<key>assets</key>
			<array>
				<dict>
					<key>kind</key>
					<string>software-package</string>
					<key>url</key>
					<string>http://xxxxx/xxxxx/xxxxx/sample.ipa</string>
				</dict>
			</array>
			<key>metadata</key>
			<dict>
				<key>bundle-identifier</key>
				<string>com.foo.apps.sample</string>
				<key>bundle-version</key>
				<string>1.0.0</string>
				<key>kind</key>
				<string>software</string>
				<key>title</key>
				<string>サンプルアプリですよ</string>
			</dict>
		</dict>
	</array>
</dict>
</plist>

bundle-identifierやbundle-versionはFlashやFlash Builderから書き出したときに使ったものと揃える必要があります。
ちなみにbundle-identifierは、そのアプリの固有のidです。リバースドメインでつけます。
私の場合だと例えば、com.kumade.apps.sampleとかそんな感じ。

ではでは。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る