iOS標準のスプラッシュスクリーンは、バックグラウンドでアプリの動作をすることができませんが、それを可能にする方法をまとめました。
iOS標準で用意されてるスプラッシュスクリーンは、アプリがバックグラウンドでの動作をするためのものではなく、iOSがアプリを起動する間に表示するものです。
なので、標準のスプラッシュスクリーンの最中にバックグラウンドでサーバーとの通信を行うことはできず、バックグラウンドでの通信はその後に行わなければならないのです。
これを解決するために、擬似スプラッシュスクリーンというものを使います。
要するに標準のスプラッシュスクリーンが表示されたあとにUIImageViewを使ってスプラッシュスクリーンの画像を表示する方法です。
AppDelegateファイルに標準のスプラッシュスクリーンの後に擬似スプラッシュスクリーンを表示してサーバーとの通信を行う例は以下の通りです。
標準のスプラッシュスクリーン画像をImages.xcassetsのLaunchImageアセットに設定します。
AppDelegate.mのdidFinishLaunchingWithOptions(起動後の処理)を以下のようにします。
こうすることにより、スプラッシュスクリーン中のバックグラウンドでの処理を行うことが出来ます。
最初のスプラッシュスクリーンの画像アセットをセットすると4インチではLaunchImage-700-568h
、3.5インチではLaunchImage-700
にアセットが定義されます。
ただし、画面全体に画像を表示しようとしているだけなので、ステータスバーに着信などのステータス表示がある場合を考慮しないと、以下のように標準のスプラッシュスクリーンが表示された後に擬似スプラッシュスクリーンがずれて表示されてしまうため、注意が必要です。