iOSシミュレータにアプリをインストールするのは簡単で、XcodeでiPhoneもしくはiPadのシミュレータを選択してビルドすればよい。シミュレータでの動作確認には開発用プロビジョニングプロファイルは不要なので、iOS Developer Programに登録する必要はない。そのままビルドすればよい。
Xcode 3.2.xのときのシミュレータはだいたいの大きさでシミュレート表示していた。iPhone 3GもRetinaのiPhone 4もほぼモニタでは同じサイズ表示される。何が違うのかというと、角丸が大きい場合はiPhone 3GSまででiPhone 4以降は角丸が小さくなって、シミュレータの表示はほぼ矩形になる。しかしモニタでの表示サイズは同じであった。
この方法でのデメリットは、ピクセル等倍で表示できないということである。iPhone 4以降のRetinaで表示してもピクセル数は実機の解像度に相当しないため、ディテールがわかりにくい。サイズの小さいテキストはほとんどシミュレータの役割を果たさない。
シミュレータでもピクセル等倍で表示するべきだ
という意見はアップルの社内で当然あっただろう。しかしMacBookでもiPhone 4 Retinaの高さ「960 pixel」は収まりきらない。iPadのRetinaに至っては高さが「2048 pixel」あるので、3分の1くらいしか表示できなくなってしまう。そこでアップルからの解答は
MacintoshもRetinaにしてiOSシミュレータに対応するぞ
というものであった。もちろんMacintoshのRetina化の最大要因がiOSシミュレータのためということではないだろうが、iOSシミュレータでより実機に近い表示を望む場合はRetina Macintoshを使いましょうという、アップルからのお達しである。
SakuttoBookはPDFや関連ファイルを差し替えるだけなので、iOSシミュレータでアプリを動作させるのは簡単なのだが、けっこう問い合わせが多いのは、
PDFを差し替えても反映されませんがどういうことでしょうか
というものである。もともとXcodeのプロジェクトフォルダ内にある「document.pdf」を同じファイル名に差し替えて、iOSシミュレータを動作させると、そのPDFがアプリとなって表示されるはずなのだが、すり替わらないのである。
このままではSakuttoBookの「PDFを差し替えるだけでアプリができます」というキャッチフレーズが嘘になってしまう。もちろん原因はSakuttoBookにあるわけではない。iOSシミュレータのアプリキャッシュデータが更新されていないということが原因である。というのは、SakuttoBookを動作させるとき、まずデフォルトで入っているサンプルPDFを使ってiOSシミュレータを起動する。そうすると、サンプルのアプリデータがiOSシミュレータ内に残ってしまう。それが削除できていないから反映しないのである。
iOSシミュレータでも実機でも同じだが、アプリの識別は「info.plist」にある「Bundle identifier」で行う。Bundle identifierは完全なユニークテキストでなければならないので、通常URLの文字列を逆さましてそこにアプリ名を識別するためのテキストを追加する。しかしPDFを差し替えてiOSシミュレータ用にビルドすると、すでにiOSシミュレータ上にある同じBundle identifierのアプリがインストールされているので、再ビルドしたアプリが更新されないのである。

*Bundle identifierにユニークテキストを指定する。iOSシミュレータで複数のアプリを使い分けないときは、そのままでいい。通常アプリを申請するときのBundle identifierを入力する。
アプリを更新するには、iOSシミュレータのメニューから[コンテンツと設定をリセット]を選択してiOSシミュレータ内のキャッシュデータをすべて削除する。もし複数のシミュレートされたアプリがあって、アプリを選択してキャッシュデータを削除したいときは、iOSシミュレータ上にあるホームボタンを長押し(マウスで長押し)すると、実機と同じように「×」がアプリに表示されて削除可能になる。

*OSシミュレータのメニューから[コンテンツと設定をリセット]でアプリを更新するたびにリセットしておくと確実。

*iOSシミュレータでホームボタンを長押し。再度長押しすると通常のモードに戻る。
Xcodeでアプリを作成してiOSシミュレータでビルドして、次に実機にインストールして、申請用にビルドしてなどと煩雑な手順を踏んでいると、ついつい[コンテンツと設定をセリット]を忘れてしまうことがある。しかし考えてみれば、iOSシミュレータでビルドするとき、iOSシミュレータ上に同じ識別子のアプリがあるとき
同じ識別子のアプリがあります。
更新しますか?
とか聞いてくるアラートを表示させればよい。そこでコンテンツをリセットすれば、すでにあるアプリのキャッシュは削除されて、変更したプロジェクトで再ビルドできるようにすればよい。
そういう意味では、Xcodeのインターフェースは脇が甘いといわれても仕方がないのではないかと思うがどうだろうか。古いアプリキャッシュを自動的に更新させない理由があるのだろうか。それともビルドしたデータをiOSシミュレータに転送するとき、iOSシミュレータ内のアプリデータにアクセスしてチェックできない理由があるのだろうか。
ちなみに実機でも確実に変更したアプリデータを反映させるためには、実機上でインストールしたアプリを先に削除しておく方が確実だ。いずれにしてもiOSシミュレータを使うときは[コンテンツと設定をリセット]を忘れないようにしよう。
◆落とし穴を回避するiOSアプリのビルドと申請[インクナブラのiPhone、iPadのiOS電子書籍セミナー]
〜Xcode 4.3.xでするアプリの実機インストールと配信用ビルドとは〜
http://bit.ly/MeW9LI
◆Xcode 4でする実機インストールの動画チュートリアルをアップ
http://bit.ly/JEofvK
◆Xcode 4でiOSアプリの設定と申請を最短距離でする方法
http://bit.ly/Jk88Bc
◆SakuttoBook(サクッとブック)でiPhoneアプリを作る方法
http://bit.ly/mhgjCG
◆SakuttoPubliパーソナル:iPhoneブックアプリ開発・申請代行はお任せ下
さい。
http://bit.ly/swjdFW
◆Xcode 4対応のSakuttoBook Lite版ならぬTrial版、無料ダウンロード開始
http://denshi-shoseki.seesaa.net/article/263470895.html
タグ:iOSシミュレータ
【SakuttoBook日記の最新記事】
- iOS 8、Xcode 5.1.1でSa..
- 2.21リジェクト顛末記2−ストアアプリ..
- 2.21リジェクト顛末記1−Sakutt..
- SakuttoBookだけでするWebの..
- 法人向けD-U-N-S Numberを無..
- 日本語版iBookstoreローンチで始..
- 複数台のMacintoshでiOS De..
- 立川談幸師のグリム童話をSakuttoB..
- iOS 6から厳格になったiCloudの..
- Xcode4.5で必要になったiPhon..
- Xcode 4.5とiOSシミュレータ ..
- iOSアプリ内課金、リストア機能なしはな..
- SakuttoBook、PDFのユニバー..
- アプリ内課金を回避するエクスプロイトの衝..
- アプリ内課金の仕組み 2 アプリ内課金は..
- アプリ内課金の仕組み 1 アプリ内課金ア..
- SakuttoBookユニバーサル版検証..
- SakuttoBookより安い儲かるiP..
- Lionへのアップデートを誘うiOS 5..
- Xcode 4でする実機インストールの動..