iTunesのアップデートでインストールしたiOS Firmwareの保存場所は、Macでは~/Library/iTunesにあるiPad Software UpdatesフォルダやiPhone Software Updatesフォルダで、各々のイメージファイルがそのフォルダに入っている。
過去のバージョンが必要な場合はそこから取得できるかもしれない。iPadのVer3.2系イメージが欲しかったので、iPad Software Updatesフォルダを確認したら入っていた。
Windowsでは
C:\Documents and Settings\Account\Application Data\Apple Computer\iTunes\
らしい。未確認。
もし手元になければiPod, iPhone and iPad Firmware Downloadから取得できるらしいが信頼性は不明。
iOSではユーザが設定した時間が経過すると自動的にロックされてスリープに入ります。これを自動的にロックされないようにする方法。
[UIApplication sharedApplication].idleTimerDisabled = YES;
これをロックされるように戻すには逆にNOを設定します。
私はFTPサーバを起動してファイルをiOSアプリに転送している時に設定。ゲームアプリでは良く使うのかな。
夕方、風呂に入ろうとしたら急に知人が訪ねてきました。
iPhoneがSIMなしという表示になって電話がかけられなくなったとのこと。
iPhoneを見てみると埃だらけ。その方は大工さんで仕事場は埃だらけ。SIMカードを取り出してみると案の定、SIMも埃まみれ。きれいにして差し込んだらSIMを認識しました。一件落着。
こういうこともあるんですね。
先日MPMoviePlayerControllerでローカルファイルを再生するコードを書いたのですが、戻る・進むボタンが正常に機能しませんでした。
具体的には
- 再生後すぐに戻るボタンをタップすると動画再生が停止する
- 進むボタンをタップすると動画再生が停止する
- 少し再生した後に戻るボタンをタップするとはじめから再生される(正常に動作)
という状況でした。
検索しても答えは見つからず、Twitterで質問してみましたが、この現象を解決する回答はありませんでした。(が、今後役に立つであろう事を教えてもらえました。ありがとうございました。)
再度Stack Overflowで検索したところやっと解決方法を見つけました。
To fix back/forward (or previous/next) buttons you should do the following:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
…
- (void) moviePlayerPlaybackStateDidChange: (NSNotification *) notification {
if (moviePlayer.playbackState == MPMoviePlaybackStateStopped) {
[moviePlayer setContentURL:[moviePlayer contentURL]];
[moviePlayer play];
}
}
[From MPMoviePlayerController problems on iPad - Stack Overflow]
これが答えでした。つまりPlaybackStateが変更された時に、playbackStateがMPMoviePlaybackStateStoppedだったらコンテンツURLを再設定して再生するというコードです。
これって、わざわざこのようなコードを入れないといけないのは少し変です。バグなのでしょうか?それともドキュメントのどこかに書いてあることなのでしょうか?
iPhone UIのテストを自動化したい。
ということでUISpecというのがある。で、導入しつつ詳しい使い方を検索してたらFonemonkeyとかいうのもある。操作を記録してくれるらしい。よさそう。こっちにしとけば良かったかな。と思いつつ調べてたら…iOS4の開発ではUIの自動テストツールがAppleから提供されるらしい。
数時間無駄になったorz。
GHUnitとiUnitTestを簡単ですが試してみました。
結局GHUnitを選択しました。
GHUnitの方が
大本のアプリケーションに追加できる。
MacOSXアプリのテストにも対応している。
といった点で気に入りました。
現在GHUnitとiUnitTestを試しています。iUnitTestを試したので次にGHUnitを試しています。
iUnitTestはそのままでテストが自動的に実行されますが、GHUnitは設定が必要でした。のでメモしておきます。
GHUnitでの自動実行の方法はXcodeで作成したGHUnitアプリケーションの実行可能ファイルに環境変数を付与します。
GHUnitアプリケーションを選択して「情報を見る」メニューで情報を表示します。引数タブを選択します。環境に設定される変数にGHUNIT_AUTORUNをYESで設定します。これで、アプリケーションを起動すればテストが自動実行されました。

iPhoneアプリの開発を始めたのでiUnitTestを導入しようとしました。
チュートリアルを参考に
> git clone git://github.com/katsuyoshi/iunittest.git
> cd iunittest
> sudo ./setup
と入力したところ
setup.rb:27: invalid multibyte char (US-ASCII)
setup.rb:27: invalid multibyte char (US-ASCII)
setup.rb:27: syntax error, unexpected $end, expecting ')'
context.gsub!(/iUnitTest/, "«PROJECTNAME»")
というエラーが発生しました。
setupファイルでsetup.rbを起動しているのですが、その指定を
ruby -Ku setup.rb
と修正してインストールしました。