2010年11月9日火曜日

iOSアプリ検証日誌 9

windowsでの証明要求作成
うまくいかない件、解決した。。

現象:
packagerのドキュメントどおりにCSRを作成するものの、Dev Centerにアップロードしようとすると、
We are unable to upload this Certificate file because it is invalid. Please check the file and try again.
という不親切なエラーでリジェクトされる。

解決方法:ChromeやFireFoxではなく、SafariでCSRをアップロードする。

http://blog.romanandreg.com/post/1416359998/we-are-unable-to-upload-this-certificate-file-because

とはいえ、結論としてはこのステップはMacで行ったほうがずっと楽だ。
たった1回の証明書作成のために、OpenSSL, Visual C++ 2008 ReDistributable, Safariをインストールしなきゃならないのは手間がかかりすぎる。

p12ファイルとプロヴィジョンのファイルがあれば、コンパイルも実機テストもできるんだし。

追記:
新しく作成した証明書とプロヴィジョンでのアプリケーションインストールまで確認しました。
むしろ、プロヴィジョンのアップデートに時間をかけてしまった。。
iTunes上でprovisionの内容の確認できないし、きっちりしないと逆に躓く原因になるなあ。

2010年11月8日月曜日

iOSアプリ検証日誌 8

できたこと

Accelerometerの値を取得してみた。
加速度ベースのジェスチャ(シャッフルでアンドゥ、等)はAPIには入っていない。
ざっと検索してみたけれど、(当然ながら)AS3の加速度ベースジェスチャ認識ライブラリっていうのはない。
本当に必要になったら、他の言語のライブラリを移植することになるんだろうな、という感じ。
(自分で実装するのは、難しすぎて割に合わなさそう。。)
今日は本当に取得値をトレースしてみただけなので、次は傾きでボールが転がるORジェスチャ時の値をグラフ表示するアプリでも作ってみるか。

Geolocation APIの値を取得してみた。
以下、計測値など。
--
▼屋内
latitude:35.67654243384615
longitude:139.78036281307692
altitude:0
horizontalAccuracy:65
verticalAccuracy:-1
heading:(デバイスによる。時計回りでの360度での角度またはNaN)
speed:-1

まず緯度経度について、とりあえずGoogleMapsで確認すると、きちんと計測できていることが確認できる(測地系や値の形式が同じなので、何も考えなくてもいい)

誤差について、mから度数に換算してみました。
・緯度
誤差65mのとき、緯度1度単位での誤差は、0.00058432=(65m/緯度一秒の距離30.9m)/3600。
・経度
誤差65mのとき、経度1度単位での誤差は、0.00072222=(65m/緯度一秒の距離25m)/3600。

verticalAccuracy, speedの-1は、ActionScriptのリファレンスには記述がないけれど、CocoaTouchのリファレンスによると、有効な値が取得できていない状態らしい。
altitudeの0も、有効な0ではないと思われる。

▼屋外
latitude:35.676447216
longitude:139.7806502833
altitude:20.712448120117188
horizontalAccuracy:47.42168335498
verticalAccuracy:70.28100138
heading:(デバイスによる。時計回りでの360度での角度またはNaN)
speed:徒歩だとほぼ0。車などでは変わるかもしれない。


イベントの来るタイミングに、かなりばらつきがある。
屋内では更新の頻度が落ちる傾向にある。何分も更新されないこともある。
屋外では、ほぼ毎秒に1回更新される。
(値の更新間隔をセットすることはできるが、主に頻繁に更新される状況を防ぐ意味のものなので、
Geolocationにおいては実装に使う必要があまり感じられない。)


▼その他参考

それにしても、屋内なのにとても正確に位置がわかるのに驚いてしまう。

▼詳しくは

ジャイロ
iPhone4にはジャイロセンサがついているけれど、AIRのAPIはないですね。


▼後で見る
・MAX2010の講演資料(カメラ、GPS、加速度)
(もう見た)加速度onモバイルデバイスのまとめ(2008)

iOSアプリ検証日誌 7

CameraUIクラス、というデバイス標準のカメラ制御アプリを使えるAPIがAIR2.5からできたらしい。
iOSでは使えないけれど。静止画および動画のキャプチャができるとのこと。

開発者向けリリースノート
ユーザ向けリリースノート

iOSアプリ検証日誌 6

できたこと

HTTP接続のモニタリングを試してみた。
(特定のホストの80番ポートに対する接続を常にモニタしてくれるというもの)

結局、モバイル環境でのネットワーク接続への対策としては、IOErrorEventのハンドラを、まじめに実装する、というのが推奨されている。

モニタリングは、社屋の中と周辺で、wifi→3G→圏外→3G→wifiという順で接続環境を変化させてみた。

基本的には、ネットワーク接続が失われたときにunavailableに、接続再開したときにavailableになる、とというイベントのみ発生する。
wifiと3Gの接続変更時には、基本的には何も起こらないが、まれに1度unavailableになってからすぐにavailableになることもあるよう。

このモニタリングがどのくらいリソースを食うのかは未確認。
それなりに頻繁にHTTPレスポンスを見るから、それなりに食っているのではないかと思うけれど。
  • ServiceMonitorのリファレンスには、接続が変化するたびにイベントが発生するとあるが、そうでもない。
  • 同じく、StatusEvent.codeより、ServiceMonitor.availableを使え、とあるが、イベント発生ごとに見ている限り、両者にずれはなさそう。
  • ServiceMonitor: http://help.adobe.com/ja_JP/Flash/CS5/AS3LR/air/net/ServiceMonitor.html



http以外のスキームのうち、
mailto:
tel:
sms:
も試してみた。
tel:スキームは、電話をかけるか否かをユーザに確認するダイアログが出ないので、自分で実装する必要がある。

2010年11月2日火曜日

iOSアプリ検証日誌 5

できたこと
テキスト、およびバイナリ形式でのファイルの保存と読み込み。
Loaderによる画像の読み込み。

所感
検証、というか、トピックとして残している点は、次の2つ。

ビデオまわりの読み込み、および再生
読み込んだSWFに含まれるアセットの利用

とりあえず流して、時間があればやるリストに入れるか・・・。

iOSアプリ検証日誌 4

できたこと

タッチ入力について
  • TouchEventは利用できる。最大タッチポイント数は5.
  • 接触領域の広さ(sizeX, sizeY)、および接触圧は取得できないよう。すべて常に1となる。
ローカルファイルストレージについて
ApplicaitonDirectoryは
/var/mobile/Applications/[16進8桁]-[16進4桁]-[16進4桁]-[16進4桁]-[16進12桁]/[App名].app
ApplicaitonStorageDirectoryは
/var/mobile/Applications/[16進8桁]-[16進4桁]-[16進4桁]-[16進4桁]-[16進12桁]/Library/Application Support/[AppID]/LocalStore
にそれぞれ存在する。
16進数の部分はAppごとに異なる。

モバイルアプリに必要な機能を最初から提供してくれるらしい、試したいですねえ。

2010年10月29日金曜日

iOSアプリ検証日誌 3

できたこと

DeviceCentralについて
DeviceCentralは、通常のFlashコンテンツ作成時に使用する。AIRアプリのプレビューおよびデバッグはADLで、という形。
DeviceCentralのデバッガ機能はいろいろ便利そうだけど、ADLには同じような機能はないのかなあ?
(やったこと:Device CentralでiPhone, iPad, ついでにGalaxy Sのデバイスプロファイルをダウンロード。
Apple製品にはAdobe, Apple製のプロファイルはないので、どこかの誰かの作成したものをDL。)

iPad, iPhone, iPodTouchで使えるジェスチャイベント
  • ズーム
  • パン
  • 回転
  • 2本指タップ
  • スワイプ
パフォーマンス
背景などを複雑な画像にすると一気にパフォーマンスが落ちる。

アプリの識別
アプリケーションは、アプリケーション名でもipaファイルのファイル名でもない何かで一意に識別されている。app.xmlの中の値なのかな。

アイコンを付ける


できていないこと

リファレンス、ローカルのものの場所はどこ?


今後調べたいこと
(もう誰かがやってないかをまずチェックすること)

  • 使えるAPI, 使えないAPIの確認
  • (各種ASライブラリがどれくらいい使えるのか)
  • ハードウェアアクセラレーションの検証