ラベル iPhone の投稿を表示しています。 すべての投稿を表示
ラベル iPhone の投稿を表示しています。 すべての投稿を表示

2010-07-06

言語設定を変えるとバッググラウンドで走っているアプリは殺される

iOS4になって、アプリを開いている最中に環境設定も開けるようになったわけで、ドキュメントにもそれに備えろよ、と言うことは書いてありますが、じゃあ根本的な設定が変わったらどうするの?と。その最たるモノが言語設定。途中で変わると画面から何から作り直さなくてはいけないので、どうなるかと試してみた。
まあ、当たり前と言えば当たり前だが、アプリは黙って殺されます。初期化にし直しましょうと言うことでしょうか。

2010-06-17

iOS 4のマルチタスクへの対応

前のポストで、そもそもiOS 4に対応するフェーズをまとめました。で、iOS 4に対応するとした場合、どの機能に対応するとどうなるかをまとめます。


高速アプリ切り替え
SDK 4.0でビルドすると自動的に対応します。ただし、マルチタスク自体のアプリとしては、裏に回ったときの正しい作法というものがありますので、それに従った動作が求められます。


バックグラウンド・オーディオ
Info.plistでバックグラウンドでの再生を希望する旨を記述しておくと、バックグラウンドに回った場合の音の再生処理が継続して行えます。アプリ側で特別にやらなくてはいけないことは増えませんが、メモリの使い量、I/Oの使い方など工夫しなくてはいけなくなると予想されます。

Voice over IP

Info.plistでVoIPを実装したいと記述しておくと、インターネット電話を実現するために必要な待ち受け接続への対応をシステムがやってくれます。起動し続けなくても、必要なときに起こされます。標準の電話アプリと同じような立ち位置になれると言うことです。実装は大変でしょう。

バックグラウンドロケーション
Info.plistでロケーションを取得したいと記述しておくと、バックグラウンドにいるときも位置情報を取得できるアプリが作れます。バッテリーのことを考えると一番やっかいな種類のアプリです。

タスクの完了待ち
これら上記の特定用途のマルチタスク機能と関係なく、すべてのiOS 4対応アプリは、バックグラウンドに回る前に一定期間の猶予が与えられます。まだ仕事完了してないよって場合には、ブロックで処理を記述して実行させることができます。この処理が終わるまでサスペンドはされません(見た目上バックグラウンドに回ったことにはなります)。一定時間を過ぎてもタスクが終わっていない場合、システムのやつは勝手に殺すぞと言ってますので気をつけましょう。

ローカル・ノーティフィケーション
上記のバックグラウンド処理がユーザーに通知するUIとしてローカル・ノーティフィケーションが追加されてます。

これ以上の詳しい情報は、iPhone developer登録をすればドキュメントで見れますので、各自調べること。

iOS 4への対応の仕方まとめ

未対応iOS 4テスト済みiOS 4対応
ビルドするSDK※1~ SDK 3.2~ SDK 3.2SDK 4.0 ~
iOS 4で動作するか?わからんするする
OS 3.1で動作するか?するするする※2
バックグラウンドで動作しないしない可能※3
サスペンドするか?しないしないする
アプリ切り替えリスト※4に並ぶ並ぶ並ぶ並ぶ
高速アプリ切替非対応非対応対応


※1 Base SDKのこと
※2 Deployment TargetがiPhone OS 3.1以前になっていれば
※3 追加で設定、コードの記述が必要
※4 マルチタスク切り替えのために画面の一番下に出るアプリのリスト